Python Matplotlib

Matplotlib

  • 第三方可视化库
  • 由各种可视化类构成,内部结构复杂,受Matlab启发
  • matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式

导入使用:

import matplotlib.pyplot as plt

基础绘图函数

函数 说明
plt.plot(x,y,fmt,...) 绘制一个坐标图
plt.boxplot(data,notch,position) 绘制一个箱形图
plt.bar(left,height,width,bottom) 绘制一个条形图
plt.barh(width,bottom,left,height) 绘制一个横向条形图
plt.polar(theta, r) 绘制极坐标图
plt.pie(data, explode) 绘制饼图
plt.psd(x,NFFT=256,pad_to,Fs) 绘制功率谱密度图
plt.specgram(x,NFFT=256,pad_to,F) 绘制谱图
plt.cohere(x,y,NFFT=256,Fs) 绘制X‐Y的相关性函数
plt.scatter(x,y) 绘制散点图,其中x和y长度相同
plt.step(x,y,where) 绘制步阶图
plt.hist(x,bins,normed) 绘制直方图
plt.contour(X,Y,Z,N) 绘制等值图
plt.vlines() 绘制垂直图
plt.stem(x,y,linefmt,markerfmt) 绘制柴火图
plt.plot_date() 绘制数据日期

Note:

  • plt.savefig(fname,dpi) : 将输出图形存储为文件,默认PNG格式,可以通过dpi修改输出质量
  • plt.show(): 显示绘图

plt.plot 坐标图

plt.plot(x, y, format_string, **kwargs)

  • x : X轴数据,列表或数组,可选(绘制多条曲线时,各条曲线的x不能省略)
  • y : Y轴数据,列表或数组
  • format_string: 控制曲线的格式字符串,可选(由颜色字符、风格字符和标记字符组成)
  • **kwargs : 第二组或更多(x,y,format_string)
    • color : 控制颜色, color='green'
    • linestyle : 线条风格, linestyle='dashed'
    • marker : 标记风格, marker='o'
    • markerfacecolor: 标记颜色, markerfacecolor='blue'
    • markersize : 标记尺寸, markersize=20
    • ...

Sample:

  1. 准备数据

     # data
     x=np.linspace(0,10,100)
     siny=np.sin(x)
     cosy=np.cos(x)
    
  2. 绘制多条曲线

     # method1:
     plt.plot(x,siny)
     plt.plot(x,cosy) 
    
     # method2:
     plt.plot(x,siny,x,cosy)
    
  3. 曲线样式设置

     # method1:
     plt.plot(x,siny,color="green")
     plt.plot(x,cosy,color="red",linestyle="--") # '--':---- , '-.':--.--.-- , ':':..... , '-': ___
    
     # method2:
     plt.plot(x,siny,'g',x,cosy,'r--')
    

    sin_cos_style

  4. 曲线标签设置

     plt.plot(x,siny,color="green",label="sin(x)")
     plt.plot(x,cosy,color="red",label="cos(x)") 
     plt.legend()
    

    sin_cos_legend

  5. 坐标轴标签设置

     plt.plot(x,siny)
     plt.plot(x,cosy)
     plt.xlabel("X axis")
     plt.ylabel("Y axis")
    

    sin_cos_xylabel

  6. 坐标轴范围设置

     plt.plot(x,siny,x,cosy)
     plt.plot(x,cosy)
    
     # method1:
     plt.xlim(-5,15)
     plt.ylim(-0.5,1.5)
    
     # method2:
     plt.axis([-1,12,-2,2]) # [x_s,x_e,y_s,y_e]
    

    sin_cos_axis

  7. 给图加标题

     plt.plot(x,siny,x,cosy)
     plt.title("Test")
    
  8. 显示绘图

     plt.show()
    

plt.scatter 散点图

Sample:

x=np.linspace(0,10,100)
siny=np.sin(x)
cosy=np.cos(x)
plt.scatter(x,siny,color="green")
plt.scatter(x,cosy,color="red")
plt.show()

sin_cos_scatter

x1=np.random.normal(0,1,1000)
x2=np.random.normal(0,1,1000)
plt.scatter(x1,x2,alpha=0.3)
plt.show()

x1_x2_scatter

plt.hist 直方图

a=np.random.normal(100,20,size=100)
plt.hist(a,40,alpha=0.3)       # 40: bin,直方个数
plt.show()

normal_hist

plt.pie 饼图

labels=['A','B','C','D']
sizes=[15,30,45,10]
explode=[0,0.1,0,0]
plt.pie(sizes,explode=explode,labels=labels,autopct="%1.1f%%",shadow=False,startangle=90)
plt.show()

pie