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:
准备数据
# data x=np.linspace(0,10,100) siny=np.sin(x) cosy=np.cos(x)
绘制多条曲线
# method1: plt.plot(x,siny) plt.plot(x,cosy) # method2: plt.plot(x,siny,x,cosy)
曲线样式设置
# method1: plt.plot(x,siny,color="green") plt.plot(x,cosy,color="red",linestyle="--") # '--':---- , '-.':--.--.-- , ':':..... , '-': ___ # method2: plt.plot(x,siny,'g',x,cosy,'r--')
曲线标签设置
plt.plot(x,siny,color="green",label="sin(x)") plt.plot(x,cosy,color="red",label="cos(x)") plt.legend()
坐标轴标签设置
plt.plot(x,siny) plt.plot(x,cosy) plt.xlabel("X axis") plt.ylabel("Y axis")
坐标轴范围设置
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]
给图加标题
plt.plot(x,siny,x,cosy) plt.title("Test")
显示绘图
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()
x1=np.random.normal(0,1,1000)
x2=np.random.normal(0,1,1000)
plt.scatter(x1,x2,alpha=0.3)
plt.show()
plt.hist 直方图
a=np.random.normal(100,20,size=100)
plt.hist(a,40,alpha=0.3) # 40: bin,直方个数
plt.show()
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()