Matplotlib绘图基础详细教程

Matplotlib数据可视化

文章目录

  • Matplotlib数据可视化
  • 1. 画图的基本步骤
  • 1.1一步一步看
  • 1.1.1**(一)第一步:创建并定义一个"画板"**(你将要在你定义的画板上面进行画图操作).
  • 1.1.2**(二).第二步:<font color=#117cb0>定义你的x,y数据**
  • 1.1.3**(三).第三步:<font color=#117cb0>设置x,y轴的大小,刻度,….**
  • 1.1.4(四).绘制图像,<font color=#117cb0>导入x,y数据,设置线条样式,颜色,粗细,添加图例,标题…
  • 1.1.5上述的完整的代码(有一些细节的添加):
  • 3.散点图
  • 4.条形图的绘制
  • 5.四幅子图的绘制
  • 6.饼状图的绘制
  • 7.热力图的绘制
  • plt是最常用的接口

    1. 画图的基本步骤

    1.导入模块

    import matplotlib as mpl
    import matplotlib.pyplot as plt
    

    2.创建画板,然后对画板进行调整
    3.定义数据
    4.绘制图形(包含坐标轴的设置,数据的导入,线条的样式,颜色,还有标题,图例,等等)
    5.plt.show()
    .
    .
    .

    1.1一步一步看

    1.1.1**(一)第一步:创建并定义一个"画板"**(你将要在你定义的画板上面进行画图操作).

    fig=plt.figure()#定义一张画板命名为fig
    

    plt.figure()括号里面还有一些参数
    例如:

    huaban=plt.figure(figsize=(6,10),facecolor='b',dpi=500)
    #figsize是调整你的图像的比例大小,上面所示就是:长/宽=6/10
    #facecolor是设置画板的背景颜色,一般颜色代码为英文的首字母
    #dpi设置图像的分辨率,分辨率越图像越清晰
    #edgcolor是设置边框颜色的参数
    

    1.1.2**(二).第二步:定义你的x,y数据**

    这里我们使用numpy库函数来制造一些数据
    所以我们还得导入numpy函数

    import numpy as np
    #设置xy的值
    x=np.linspace(-5,5,11)#这里就是把-5到5平均分成十一份,(-5,-4,-3,.....)
    y=[1,6,3,-3,6,8,3,6,9,1,-5]
    

    1.1.3**(三).第三步:设置x,y轴的大小,刻度,…**

    #添加p1到画板
    p1=fig.add_subplot(111)#这里的111是指把画板分成一行一列,把p1添加到第一副图
    
    #限制函数坐标轴的长度
    p1.axis([-5,5,-10,10])#x轴长度为-5到5,y轴长度为-10到10
    
    #设置x,y轴的刻度
    plt.xticks(x)
    plt.yticks(y)
    #这里是指:x,y轴的刻度为之前定义的x,y数据列表
    
    #设置坐标轴的上下限
    plt.xlim(-5,5)
    plt.ylim(-10,10)
    

    1.1.4(四).绘制图像,导入x,y数据,设置线条样式,颜色,粗细,添加图例,标题…

    #绘制图像
    p1.plot(x,y,marker='o',ms=5,lw=2,ls='--',label='band')
    #x,y就是最开始定义的数据
    #marker是设置拐点样式:o/h/^/./+等等
    #ms是设置拐点的标记大小
    #lw就是设置线条粗细,数值越大线条越粗
    #ls是设置线条样式,这里'--'为虚线
    #label是设置此线条的名称标题
    
    
    p1.legend(loc='best')#添加图例,其中best是指将图例的位置添加到最佳位置,
    #你也可以自己设置位置,例如:upper left(左上角)
    
    
    #添加标题
    plt.title('NUM',fontsize=24)#设置图像的标题,fontsize是设置标题文字的大小
    plt.xlabel('Value',fontsize=14)#设置x轴的标题
    plt.ylabel('ARG',fontsize=14)#设置y轴的标题
    
    

    现在基本上就设置好了,因为我是在脚本中画图,所以我需要在代码的最后添加一个:plt.show(),它会自动启用一个事件循环,并找到所有当前可用的图形对象,然后打开一个交互式窗口来显示图形.

    1.1.5上述的完整的代码(有一些细节的添加):

    import matplotlib.pyplot as plt
    import numpy as np
    #设置xy的值
    x=np.linspace(-5,5,11)
    y=[1,6,3,-3,6,8,3,6,9,1,-5]
    #创建一张画板
    huaban=plt.figure(figsize=(6,10))
    #添加p1到画板
    p1=huaban.add_subplot(111)
    
    #限制函数坐标轴的长度
    p1.axis([-5,5,-10,10])
    
    #设置x,y轴的刻度
    plt.xticks(x)
    plt.yticks(y)
    
    
    #去除右边边框
    p1.spines['right'].set_color('none')
    #去除顶部边框
    p1.spines['top'].set_color('none')
    
    #下面两行代码是将xy轴的交点改为(0,0)
    p1.spines['bottom'].set_position(('data',0))
    p1.spines['left'].set_position(('data',0))
    
    #绘制图像
    p1.plot(x,y,marker='^',ms=5,lw=2,ls='--',label='band')
    p1.legend(loc='upper left')
    #添加标题
    plt.title('NUM',fontsize=24)
    plt.xlabel('Value',fontsize=14)
    plt.ylabel('ARG',fontsize=14)
    
    #添加辅助虚线
    for i in range(len(x)):
        x1=[x[i],x[i]]
        y1=[0,y[i]]
        plt.plot(x1,y1,'r-.')
    for i in range(len(x)):
        x2=[0,x[i]]
        y2=[y[i],y[i]]
        p1.plot(x2,y2,'r-.')
    
    #添加每个折点的坐标
    for i in range(len(x)):
        p1.text(x[i],y[i],(x[i],y[i]),c='green')
    
    plt.grid(c='b',ls='--')#这个函数是生成网格的函数
    plt.show()
    

    输出结果:

    3.散点图

    散点图其实大部分语法和上述差不多,只需要将折线图中的plt.polt()改为plt.scatter()

    这里我们只需要画一幅图来做个例子,就省去创建画板的步骤,创建画板的步骤在后面才会有用.

    import numpy as np
    import matplotlib.pyplot as plt
    
    #随机生成一些数据
    N=20
    x=np.random.rand(N)
    y=np.random.rand(N)
    x1=np.random.rand(N)
    y1=np.random.rand(N)
    
    plt.scatter(x,y,s=100,c='red',marker='^',label='red')#c是color的简称,设置颜色
    plt.legend(loc='best')
    
    plt.scatter(x1,y1,s=50,c='blue',marker='o',label='blue')
    plt.legend(loc='upper left')#在左上角添加图例
    
    plt.xlabel('x')#给横坐标添加标签
    plt.ylabel('y')#给纵坐标添加标签
    plt.title('picture')#给图像添加标签
    plt.show()#显示图像
    

    .
    输出结果:

    4.条形图的绘制

    使用plt.bar()进行绘制

    import numpy as np
    import matplotlib.pyplot as plt
    
    x=[1,2,3,4,5]
    y=np.random.rand(5)
    plt.figure(figsize=(8,4))
    plt.bar(x,y)
    x_t=list(range(len(x)))
    plt.xticks(x,x_t)
    plt.show()
    

    输出结果:

    5.四幅子图的绘制

    画子图就需要创建画板,然后对画板进行分割,然后在分出来的位置进行绘制不同的图像.
    重点是这里:

    p1 = huaban.add_subplot(221)
    p2=huaban.add_subplot(222)
    p3=huaban.add_subplot(223)
    p4=huaban.add_subplot(224)
    #这些数字的意思就是,把画板分成两行两列,四个位置,然后p1在位置1,p2在位置2,p3在位置3.......
    
    
    import numpy as np
    import matplotlib.pyplot as plt
    
    x=range(-10,10,1)
    y=np.random.rand(20)
    huaban=plt.figure(facecolor='pink',figsize=(8,8),dpi=100)
    
    p1 = huaban.add_subplot(221)
    p1.plot(x,y,label="sinx",marker='o')
    plt.legend(loc='best')
    plt.grid(c='r',linestyle=':')
    
    p2=huaban.add_subplot(222)
    x1=np.linspace(-np.pi*2,np.pi*2,1000)
    y1=np.sin(x1)
    p2.plot(x1,y1,label="sinx",color='blue')
    plt.legend(loc='best')
    plt.grid(c='b',linestyle='--')
    
    
    p3=huaban.add_subplot(223)
    x2=np.random.rand(10)
    y2=np.random.rand(10)
    x3=np.random.rand(10)
    y3=np.random.rand(10)
    p3.scatter(x2,y2,c='red',marker='o',label="散点图")
    p3.scatter(x3,y3,c='red',marker='^',label="散1")
    
    p4=huaban.add_subplot(2,2,4)
    p4.plot(x1,np.cos(x1),label="cosx")
    plt.legend('best')
    plt.grid(c='c',linestyle=':')
    plt.show()
    

    输出结果:

    6.饼状图的绘制

    import matplotlib.pyplot as plt
    x=[35,25,25,15]
    colors=["#14615E", "#F46C40", "#3E95C0", "#A17D3B"]
    name=['A','B','C','D']
    label=['35.00%','25.00%','25.00%','15.00%']
    huaban=plt.figure()
    p1=huaban.add_subplot(111)
    
    p1.pie(x,labels=name,colors=colors,autopct='%1.2f%%',explode = (0, 0.2, 0, 0))
    plt.axis('equal')
    plt.show()
    

    输出结果:

    7.热力图的绘制

    import matplotlib.pyplot as plt
    import numpy as np
    plt.figure(figsize=(4,4))
    # Fixing random state for reproducibility
    #np.random.seed(19680801)
    #创建子图1
    plt.subplot(211)
    plt.imshow(np.random.random((10, 10)), cmap="hot")
    
    #创建子图2
    plt.subplot(212)
    plt.imshow(np.random.random((5, 5)), cmap="winter")
    
    plt.subplots_adjust(bottom=0.09, right=0.5, top=0.9)
    cax = plt.axes([0.75, 0.1, 0.065, 0.8])
    plt.colorbar(cax=cax)
    
    
    plt.show()
    

    输出结果:

    物联沃分享整理
    物联沃-IOTWORD物联网 » Matplotlib绘图基础详细教程

    发表回复