Matplotlib 基础
注:本文中的程序都默认引入了numpy库和matplotlib库,并且分别简写为np与plt;如果读者不知道怎么使用numpy库,可以移步到这一博客上进行简单的学习
一、简单绘图案例
#简单的画图例子 x=np.linspace(0,1,num=200)#横坐标 y1=x**2#纵坐标1 y2=x*3+0.2#纵坐标2 #图片框1 plt.figure(1) plt.plot(x,y1, label='line1')#绘制曲线 plt.plot(x,y2, linewidth=5, color='coral', linestyle='--', label='line2')#绘制不同风格的曲线 plt.legend() #图片框2 plt.figure(2) plt.plot(x,y2) plt.show()#显示
显示结果:
二、设置坐标轴
#坐标轴设置 x=np.linspace(0,1,num=200) y1=x**2 #图片框1 plt.figure(1) plt.plot(x,y1)#绘制曲线 #坐标轴设置 plt.xlim((0,1))#x轴取值范围 plt.ylim((0,1))#y轴取值范围 plt.xlabel('x')#x轴轴标 plt.ylabel('y')#y轴轴标 #x轴ticks设置 new_ticks=np.linspace(0,1,5) plt.xticks(new_ticks) #设置绘图坐标轴的位置 axis=plt.gca()#获取当前的坐标轴 axis.spines['left'].set_position(('data', 0.1))#将y轴设置到x轴上为1的位置 axis.spines['bottom'].set_position(('data', 0.5))#将x轴设置到y轴上为1的位置 plt.show()
输出结果:
三、图片标注
#图片标注 x=np.linspace(0,1,num=200) y1=x**2 plt.figure(1) plt.plot(x,y1,label='line 1')#绘制曲线,label设置为1 plt.legend() #设置绘图坐标轴的位置 axis=plt.gca()#获取当前的坐标轴 axis.spines['left'].set_position(('data', 0))#将y轴设置到x轴上为0的位置 axis.spines['bottom'].set_position(('data', 0))#将x轴设置到y轴上为0的位置 #被标注点 x0=0.5 y0=0.5**2 plt.scatter(x0, y0, s=30, color='red')#通过散点图来绘制点 plt.plot([x0,x0],[y0,0], color='black', linestyle='--',linewidth=3)#绘制一条垂直于x轴的虚线 #添加标注 plt.annotate('annotation', [x0+0.1,y0], fontsize=10)#在坐标[x0+0.1,y0]处添加标注 plt.show()
输出结果:
四、设置坐标轴游标字体大小
#操作坐标轴的label x=np.linspace(0,2,num=200) y1=x**2 #图片框1 plt.figure(1) plt.plot(x,y1)#绘制曲线 #坐标轴设置 plt.xlim((0,2))#x轴取值范围 plt.ylim((0,2))#y轴取值范围 ax=plt.gca()#拿到现在的坐标轴 for label in ax.get_xticklabels() +ax.get_yticklabels(): label.set_fontsize(12)#设置坐标轴label的字体大小 plt.show()
输出结果:
五、绘制散点图
# scatter 散点图 x=np.random.normal(0,1,100) y=np.random.normal(0,1,100) plt.scatter(x,y, s=50, c='blue',marker='o',alpha=0.6) plt.show()
六、柱状图
x=np.arange(0,10, step=1) y=np.arange(0,10, step=1) plt.bar(x,y, color='red', width=0.3)
#在每一个柱形图上面添加文字标注 for x0,y0 in zip(x,y): plt.text(x0,y0, '%i'%y0) plt.show()
输出为:
七、等高线图
#等高线图 x=np.linspace(0,10, 100) y=np.linspace(0,10, 100) x_m,y_m=np.meshgrid(x,y)#网格化 z=x_m**2+y_m**2 plt.contourf(x_m, y_m, z, 10, alpha=0.5, cmap=plt.cm.hot)#绘制热图,10代表着高度的分级 c=plt.contour(x_m,y_m, z, 10, colors='black', linewidth=11)#绘制等高线 plt.clabel(c, inline=True, fontsize=10)#为等高线添加标注 plt.show()
八、3D绘图
#3D绘图 from mpl_toolkits.mplot3d import Axes3D x=np.linspace(0,10, 100) y=np.linspace(-10,10, 100) x_m,y_m=np.meshgrid(x,y)#网格化 z=x_m**2+y_m**2 fig=plt.figure() ax=Axes3D(fig)#为figure添加3D坐标轴 ax.plot_surface(x_m, y_m, z,rstride=5, cstride=5, cmap=plt.cm.hot)#绘制3D的表面, rstide为行跨度,cstride为列跨度 ax.contourf(x_m, y_m, z, zdir='z',offset=6)#offset指的是等高线图与xy平面之间的距离, zdir设置投影方向 plt.show()
九、subplot 绘制多个图
#subplot,绘制子图像 x=np.linspace(0,1,100) y=x**2 plt.figure() plt.subplot(2, 2,1)#将figure划分为2*2,在编号为1的位置绘图 plt.plot(x,y) plt.subplot(2, 2,2)#将figure划分为2*2,在编号为2的位置绘图 plt.plot(x,x) plt.subplot(2, 2,3)#将figure划分为2*2,在编号为3的位置绘图 plt.plot(y,y) plt.subplot(2, 2,4)#将figure划分为2*2,在编号为4的位置绘图 plt.plot(y,y) plt.show()