找回密码
 会员注册
查看: 43|回复: 0

PythonMatplotlib多Y轴图形绘制技巧:从双轴到四轴,一文掌握图表美化方法

[复制链接]

4

主题

0

回帖

13

积分

新手上路

积分
13
发表于 2024-9-4 22:23:31 | 显示全部楼层 |阅读模式
在matplotlib中,绘制多Y轴图形常常使用twinx()方法。双y轴(左右各1Y轴)#d:/work/matplotlib/y_ax.py#创建图形和主Y轴fig,ax1=plt.subplots(figsize=(10,6))#绘制第一个数据集ax1.plot(x,y1,'b-')ax1.set_xlabel('X数据')ax1.set_ylabel('Y1数据',color='b')ax1.tick_params('y',colors='b')#创建第二个Y轴ax2=ax1.twinx()ax2.plot(x,y2,'r-')ax2.set_ylabel('Y2数据',color='r')ax2.tick_params('y',colors='r')plt.show()fig.savefig("my_figure.png",dpi=300)#保存为PNG格式,DPI为30012345678910111213141516171819三Y轴(左1右2)如果您想在图的右侧多留一点空白,可以使用subplots_adjust方法调整图形的边界:使用subplots_adjust方法subplots_adjust方法允许您微调图形的各个边界。其中,right参数决定了图形右侧边界的位置。以下是调整右侧边界的代码示例:#调整右侧边界,使其更靠近图形的左侧,从而在图形右侧留下更多的空白。#值越小,右侧空白越大。默认值为1。fig.subplots_adjust(right=0.8)#例如,将右边界设置为整个图形宽度的80%plt.show()1234在您提供的代码中插入上述调整后,应该可以得到一个右侧有更多空白的图形。#d:/work/y_ax_3.pyfig,ax1=plt.subplots(figsize=(10,6))#调整右侧边界,使其更靠近图形的左侧,从而在图形右侧留下更多的空白。#值越小,右侧空白越大。默认值为1。fig.subplots_adjust(right=0.8)#例如,将右边界设置为整个图形宽度的80%#绘制第一个数据集ax1.plot(x,y1,'b-')ax1.set_xlabel('X数据')ax1.set_ylabel('Y1数据',color='b')ax1.tick_params('y',colors='b')#创建第二个Y轴ax2=ax1.twinx()ax2.plot(x,y2,'r-')ax2.set_ylabel('Y2数据',color='r')ax2.tick_params('y',colors='r')#创建第三个Y轴ax3=ax1.twinx()#调整ax3位置,为了不与ax2重叠ax3.spines['right'].set_position(('outward',60))ax3.plot(x,y3,'g-')ax3.set_ylabel('Y3数据',color='g')ax3.tick_params('y',colors='g')plt.show()fig.savefig("y_ax_3.png",dpi=300)#保存为PNG格式,DPI为30012345678910111213141516171819202122232425262728左右各2个Y轴(左2右2)#d:/work/y_ax_4.py#创建图形和主Y轴fig,ax1=plt.subplots(figsize=(10,6))#绘制第一个数据集-左侧的第一个Y轴ax1.plot(x,y1,'b-')ax1.set_xlabel('X数据')ax1.set_ylabel('Y1数据',color='b')ax1.tick_params('y',colors='b')#创建左侧的第二个Y轴ax2=ax1.twinx()#调整ax2的位置,为了不与ax1重叠ax2.spines['left'].set_position(('outward',60))ax2.yaxis.set_ticks_position('left')ax2.yaxis.set_label_position('left')ax2.plot(x,y2,'g-')ax2.set_ylabel('Y2数据',color='g')ax2.tick_params('y',colors='g')#创建右侧的第一个Y轴ax3=ax1.twinx()ax3.plot(x,y3,'r-')ax3.set_ylabel('Y3数据',color='r')ax3.tick_params('y',colors='r')#创建右侧的第二个Y轴ax4=ax1.twinx()#调整ax4的位置,为了不与ax3重叠ax4.spines['right'].set_position(('outward',60))ax4.plot(x,y4,'m-')ax4.set_ylabel('Y4数据',color='m')ax4.tick_params('y',colors='m')#调整图的边界,为了有更多的空白来展示所有的y轴fig.subplots_adjust(left=0.2,right=0.8)plt.show()fig.savefig("y_ax_4.png",dpi=300)#保存为PNG格式,DPI为3001234567891011121314151617181920212223242526272829303132333435363738394041ax1是最左侧的Y轴。ax2是左侧的第二个Y轴,它向左移动了一些,以便与ax1分开。ax3是右侧的第一个Y轴。ax4是右侧的第二个Y轴,它向右移动了一些,以便与ax3分开。最后,通过fig.subplots_adjust方法,我们调整了图的左侧和右侧的边界,以确保所有的Y轴都可以在图中清晰地显示出来。代码下载后台回复多y轴获取所有代码和文件。有时,代码的分享连接可能会晚一点送达,如果没能及时回复,稍后会补上分享连接。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 12:35 , Processed in 5.372097 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表