• python 可视化工具-matplotlib


    一、matplotlib介绍

    python优秀的数据可视化第三方库

     matplotlib库的效果

    官网:https://matplotlib.org/

    当我们想画一个图但不知道怎么画出来的时候,就可以去这个网站上去找了,网站上罗列出来了各式各样的绘图形式

    配置参数:

    axex: 设置坐标轴边界和表面的颜色、坐标刻度值大小和网格的显示
    figure: 控制dpi、边界颜色、图形大小、和子区( subplot)设置
    font: 字体集(font family)、字体大小和样式设置
    grid: 设置网格颜色和线性
    legend: 设置图例和其中的文本的显示
    line: 设置线条(颜色、线型、宽度等)和标记
    patch: 是填充2D空间的图形对象,如多边形和圆。控制线宽、颜色和抗锯齿设置等。
    savefig: 可以对保存的图形进行单独设置。例如,设置渲染的文件的背景为白色。
    verbose: 设置matplotlib在执行期间信息输出,如silent、helpful、debug和debug-annoying。
    xticks和yticks: 为x,y轴的主刻度和次刻度设置颜色、大小、方向,以及标签大小。

    Python matplotlib的绘图风格效果展示大全

    matplotlib的plot函数说明

     pyplot的基础图标函数

     

     

    引入模块:

    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd

    折线图

    plt.style.use('seaborn-whitegrid')
    
    """设置字体,用于显示中文"""
    plt.rcParams['font.sans-serif']=['FangSong']
    """SimSun 宋体,Microsoft YaHei微软雅黑 YouYuan幼圆 FangSong仿宋"""
    plt.rcParams['font.size']=20
    plt.rcParams['axes.unicode_minus']=False# 负号乱码
    
    """折线图"""
    x = np.array([1,3,5,7,9])
    y = np.array([2,4,5,8,10])
    plt.plot(x,y)
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.title('折线图')
    # plt.xlim(4,6)# 指定坐标轴的显示范围
    # plt.ylim(3,7)
    # plt.xticks((0,1,2,3,4,5,6,7,8,9))# 指定坐标轴的显示刻度

     散点图:

    """散点图"""
    """plot() 指定图样为点状实现"""
    x = np.array([1,3,5,7,9])
    y = np.array([2,4,5,8,10])
    plt.plot(x,y,'r.')
    x = np.random.randint(0,100,10)
    y = np.random.randint(0,100,10)
    z = np.random.randint(0,100,10)
    plt.plot(x,y,'r.')
    plt.plot(x,z,'g^')
    plt.plot(y,z,'y+')
    """采用不同的线型"""
    a = np.arange(10)
    # plt.plot(a,a*1.5,'go-',a,a*2.5,'r>',a,a*3.5,'*',a,a*4.5,'b-.')
    plt.plot(a,a*1.5,'go-',a*2.5,'r>',a*3.5,'*',a*4.5,'b-.')# 同时传入多个数据集
    """scatter() 散点图"""
    # 绘图风格
    plt.style.use('classic')
    x = np.random.random(100)
    y = np.random.random(100)
    colors=np.random.random(100)
    plt.scatter(x,y,c=colors,s=50) # colors 随机颜色 随机颜色效果显示不佳,和绘图风格有关系,s 控制点的大小
    """自定义生成随机颜色"""
    def random_colors(number):# number 生成随机颜色的个数
        elem = '0123456789ABCDEF'# 从这个字符串中随机选取六个字符,组成随机颜色,形如   #78SFES
        colors=[]
        for i in range(number):
            colors.append('#'+''.join(np.random.choice(list(elem),6)))
        return colors
    plt.style.use('seaborn-whitegrid')
    x = np.random.random(100)
    y = np.random.random(100)
    colors=random_colors(100)
    plt.scatter(x,y,c=colors,s=50)

     柱形图:

    GDP = np.arange(10000,20000,2000)
    citys=['北京','上海','广州','深圳','杭州']
    plt.bar(citys,GDP,alpha=0.5,width=0.5,color='g')#alpha 透明度
    """多画板绘图 subplot()"""

     多画板绘图:

    
    a = np.linspace(0,10,100)
    print(a)
    plt.figure(figsize=(12,5))# 指定画板的尺寸
    plt.subplot(1,2,1) # 生成一行两列的画板,指定第一个画板
    plt.plot(a,np.sin(a),'r--')
    plt.subplot(1,2,2)# 生成一行两列的画板,指定第二个画板
    plt.plot(a,np.cos(a),'b.')
    """subplots() """
    a = np.linspace(0,10,100)
    fig,ax = plt.subplots(2,2,sharex=True,sharey=True,figsize=(12,5))# 生成两行两列的画板对象 share 共享坐标轴
    ax[0,0].plot(a,np.sin(a))
    ax[0,0].set_title('sin()')
    
    ax[0,1].plot(a,np.cos(a),'r')
    ax[0,1].set_title('cos()')
    
    ax[1,0].plot(a,np.sin(a)+1,'g')
    # ax[1,0].set_title('sin()+1')
    ax[1,0].text(4,0.5,'sin()+1')# 在指定位置显示文字
    
    ax[1,1].plot(a,np.cos(a)+1,'y')
    ax[1,1].text(6,1,'cos()+1')# 在指定位置显示文字  坐标轴(6,1)
    t = np.linspace(0,2*np.pi,100)
    x = 16*np.sin(t)**3
    y = 13*np.cos(t)-5*np.cos(2*t)-2*np.cos(3*t)-np.cos(4*t)
    plt.plot(x,y,'r-')

    频率分布直方图

    """频率分布直方图"""
    arr = [10,20,30,40,10,20,30,40,20,30]
    plt.figure(figsize=(12,3))
    # 值方图 bins宽度,alpha透明度
    plt.hist(arr,bins=15,alpha=0.5,color='r',density=False)# ,density=False 显示频数,True 频率
    plt.xlabel('value')
    plt.ylabel('frequency')
    plt.xticks((10,20,30,40))# 指定刻度
    plt.title('Histogram')

     

    np.random.seed(0)
    arr = np.random.randint(0,10,size=(100,2)) #100 X 2 ,100行2列
    plt.figure(figsize=(12,6))
    plt.hist(arr,label=['第一列','第二列'],bins=25,alpha=0.7)
    plt.legend(loc='best')# 显示图例,并置于最佳位置

    堆叠展示

    plt.figure(figsize=(12,6))
    plt.hist(arr,label=['第一列','第二列'],bins=25,alpha=0.7,stacked=True)# 堆叠展示
    plt.legend(loc='best')# 显示图例,并置于最佳位置
    """注意构造一个多列的数据集"""
    """利用小费数据集,统计不同性别,是否吸烟的分布"""
    tips = pd.read_csv('tips.csv',header=0)
    tips.head()
    """构造n X 2的数据结构"""
    tips['smoker2']=tips['smoker'].map({'No':0,'Yes':1})
    male = tips.loc[tips['sex']=='Male','smoker2']
    female = tips.loc[tips['sex']=='Female','smoker2']
    d = pd.DataFrame({'male':male,'female':female})
    # d.head()
    
    plt.figure(figsize=(8,4))
    plt.hist(d.values,label=['male','female'],bins=10)
    plt.legend()
    plt.title('不同性别的吸烟者人数,0 不吸烟,1 吸烟')
    plt.xticks((0,1))

    pandas 自带的绘图函数plot()

    """pandas 自带的绘图函数plot()"""
    d.plot(kind='hist',figsize=(12,5),subplots=True,xticks=(0,1),yticks=(10,30,50,70,90))# subplot =True 分开绘制 xticks 设置刻度显示

    柱形图

    """柱形图"""
    d2 = tips.groupby(['sex','smoker'])['sex'].count()
    d2.plot(kind='bar',figsize=(12,5),width=0.3)

    折线图

    """折线图"""
    d3 = np.random.randint(1,100,10)
    se = pd.Series(d3)
    se.plot(kind='line',figsize=(12,5))

    饼状图

    """饼状图"""
    plt.figure(figsize=(5,5))
    size = [30,30,25,15]
    labels=['阿里','腾讯','百度','今日头条']
    explode = [0.2,0,0.1,0] #分离效果
    plt.pie(size,autopct='%.2f%%',labels=labels,explode=explode)# autopct 控制数字的效果显示 ,explode 分离效果
    plt.title('互联网巨头市场份额')

    """缺点:参数太多,绘图效率较低"""
    """优势,和numpy,pands 无缝对接,在数据分析的过程中增加一种数据可视化的辅助方法"""

    """其他的第三方绘图库,serborn,pyecharts"""

  • 相关阅读:
    【linux】——man中文帮助手册安装
    【linux】——centos 分辨率配置
    松本行弘访谈录
    图灵热点之阅读篇——五月图书推荐
    《Linux/Unix 设计思想》的翻译细节讨论
    一本书的推荐序——写在《思考的乐趣》即将上市之际
    带您走进七周七语言的程序世界
    作者为何要创作《网站转换率优化之道》
    Apress水果大餐——移动开发
    “怪诞”的数学天才
  • 原文地址:https://www.cnblogs.com/foremostxl/p/11920837.html
Copyright © 2020-2023  润新知