python: matplotlib常用画图流程及命令

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/love_image_xie/article/details/84673100

        在matplot中,整幅图像为一个figure对象,在figure对象中包含一个或者多个axes对象,,每个axes对象都是一个拥有自己坐标系统的绘图区域。关系如下:

图形的组成结构如下:

画图流程:

开始->创建画图figure->创建子图fig1,axes->画线->设置标题title->设置图例legend->设置坐标轴->设置网格->注释及刻度->结束

1、创建图形:f=plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=Trye)

num: 图像编号

figsize:(width, height),以英寸为单位

dpi: 分辨率,每英寸多少像素

facecolor: 背景颜色

edgecolor: 边框颜色

frameon:  是否有边框

2、创建子图

subplot创建单个子图:

#有两种方式
#方式一:借助plt创建
plt.subplot(2,2,1)
plt.plot(x,x)
#方式二:借助总图返回的对象f创建
f.add_subplot(2,2,1)

subplots创建多个子图:

fig,axes=plt.subplots(2,2)
ax1=axes[0,0]
ax2=axes[0,1]
ax3=axes[1,0]
ax4=axes[1,1]
ax1.plot(x,x)

       上面返回的都是axes对象,可以通过指定哪一行和哪一列任意排列axes位置,通过[x,y,width,height],这四个值都是相对取值的,在0-1之间,前面两个以左下角为基准,后面两个相对于整个figure对象的宽度和高度。

#同样有两种方式
#方式一:通过plt创建
plt.axes([0.1,0.1,0.8,0.8])
#方式二:通过借助总图所返回的对象f创建
f.add_axes([0.1,0.1,0.8,0.8])

3、画线

#colors=['red','blue','orange']
plt.plot(x,y,c=colors[i],label=str(i))

4、标题    plt.title('谢芬芬')

5、图例   

plt.legend(handles=[l1, l2], labels=['up', 'down'],  loc='lower right')

6、坐标轴

#显示范围
fig1.axis([xmin,xmax,ymin,ymax])
plt.axis([xmin,xmax,ymin,ymax])

#分别设置x、y轴的显示范围
fig1.set_xlim(2,4)  fig1.set_ylim(2,4)
plt.xlim(2,4)   Plt.ylim(2,4)

#设置刻度
plt.yticks([-1,-1/2,0,1/2,1])
fig1.set_yticks([-1,-1/2,0,1/2,1])  
fig1.xaxis.set_ticks([1,2,3,4,5,6,7,8]) 
#上述两种方法只能设置数字刻度,此方法可用字符串,字旋转45度
plt.xticks([0,np.pi/2,np.pi,3*np.pi/2,2*np.pi],['aaa','bbb','ccc','ddd','eee'],fontsize=‘xx-large’,rotation=45)
# 若要显示π、α等一些特殊的数学符号
plt.xticks([0,np.pi/2,np.pi,3*np.pi/2,2*np.pi],['$0$','$\pi/2$','$\pi$','$3\pi/2$','$2\pi$'],fontsize=‘xx-large’)

#关闭坐标轴
plt.axis('off')

#坐标轴不可见
fig.get_xaxis().set_visible(False) #不显示x轴
fig.get_yaxis().set_visible(False)

7、网格  plt.grid()

8、显示  plt.show()

常见出现问题:

1、多幅图出现图像部分重叠

采用: fig.tight_layout(pad=None,w_pad=None,h_pad=None)

参数:

        pad: 设置绘图区边缘与画布边缘的距离大小

        w_pad: 设置绘图区之间的水平距离大小

        h_pad: 设置绘图区之间的垂直距离大小

        使得子图横纵坐标更加紧凑,主要用于自动调整图区的大小及间距,使得所有绘图及其标题、坐标轴标签都不重叠

2、plt.subplot(5,5,x),x要从1开始,不能从0,否则会出现ValueError: num must be 1 <= num <= 25


for i in range(25):
    plt.subplot(5, 5, 1+i)

猜你喜欢

转载自blog.csdn.net/love_image_xie/article/details/84673100