最近在上python数据分析课程,结合之前自己自学和会议论文里面遇到的数据可视化总结了一下多图绘制在一块画布的两种写法。
下面是一张七行一列的图片,是我在EMD算法中对原始信号分解得到的,在这之前我已经有七个数组的数据了,我的需求就是把七个数组绘制到同一幅图并且每个y轴都加上信号信息:
![这是一张七行一列的图片,是我在EMD算法中对原始信号分解得到的,在这之前我已经有七个数组的数据了,我的需求就是把七个数组绘制到同一幅图并且每个y轴都加上信号信息]## ax[0,0]方式的
fig,axs = plt.subplots(3,3,sharex=True,sharey=False,figsize=(14,8))
#创建画布,3*3就是有9张子图,sharex是指共享x轴,figsize为图片尺寸
axs[0,0].plot(x,y)
axs[0,0].set_ylabel("1")
#axs[0,0]为第一行第一列的子图,set_ylabel为给y轴添加标签
axs[1,1].plot(x1,y1)
axs[1,1].set_ylabel("2")
#同上
axs[1,2].plot(x2,y2)
axs[1,2].set_ylabel("3")
axs[2,1].plot(x3,y3)
axs[2,1].set_ylabel("4")
axs[2,2].plot(x4,y4)
axs[2,2].set_ylabel("5")
plt.subplots_adjust(hspace=0,wspace=0)
#hspace为调整子图之间的高度间距,同理宽度是wspace
plt.xlabel('t/s')
#设置x轴标签
plt.savefig('例子')
#保存图片,如果是在jupyter里面的话需要在展示图片之前保存
plt.show()
plt.figure(figsize=(12, 10))
ax1=plt.subplot2grid((2,2),(0,0),colspan=1,rowspan=1)
#第一个括号的(2,2)表示将画布分割成2*2,(0,0)表示该子图从位置(0,0)开始,
#colspan和rowspan分别表示子图占用的行长度和列长度
ax1.plot(x,y)
ax1.set_ylabel("1")
ax2=plt.subplot2grid((2,2),(0,1),colspan=1,rowspan=1)
ax2.plot(x1,y1)
ax2.set_ylabel("2")
ax3=plt.subplot2grid((2,2),(1,0),colspan=2,rowspan=1)
ax3.plot(x2,y2)
ax3.set_ylabel("3")
plt.savefig('例子2')
plt.show()
我的第二种方法是引用了博客园大神 短短的路走走停停 的代码:https://www.cnblogs.com/dengfaheng/p/12720431.html
我学会的两种方法就介绍到这里,希望对大家有帮助,有错误和不足也欢迎指出,毕竟我也是初学者哈哈~