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

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为300

三Y轴(左1右2)

如果您想在图的右侧多留一点空白,可以使用subplots_adjust方法调整图形的边界:

  1. 使用subplots_adjust方法
    subplots_adjust方法允许您微调图形的各个边界。其中,right参数决定了图形右侧边界的位置。

以下是调整右侧边界的代码示例:

# 调整右侧边界,使其更靠近图形的左侧,从而在图形右侧留下更多的空白。
# 值越小,右侧空白越大。默认值为1。
fig.subplots_adjust(right=0.8)  # 例如,将右边界设置为整个图形宽度的80%
plt.show()

在您提供的代码中插入上述调整后,应该可以得到一个右侧有更多空白的图形。

#d:/work/y_ax_3.py
fig, 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为300

左右各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为300

  1. ax1是最左侧的Y轴。
  2. ax2是左侧的第二个Y轴,它向左移动了一些,以便与ax1分开。
  3. ax3是右侧的第一个Y轴。
  4. ax4是右侧的第二个Y轴,它向右移动了一些,以便与ax3分开。

最后,通过fig.subplots_adjust方法,我们调整了图的左侧和右侧的边界,以确保所有的Y轴都可以在图中清晰地显示出来。

代码下载

后台回复多y轴获取所有代码和文件。有时,代码的分享连接可能会晚一点送达,如果没能及时回复,稍后会补上分享连接。

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MatplotlibPython数据分析中常用的可视化工具,它可以创建出版质量的图形,并且具有丰富的功能和灵活的定制选项。在Matplotlib中,可以使用双Y轴来显示两个不同尺度或单位的数据。 要实现双Y轴,在Matplotlib中可以使用两种方法。第一种方法是使用`twiny()`和`twinx()`函数创建一个或多个双Y轴。`twiny()`函数用于创建一个新的X,而`twinx()`函数用于创建一个新的Y轴。然后,可以使用这些新绘制相应的数据。 另一种方法是使用`secondary_y=True`参数,该参数可在创建图形时指定。在绘制图形时,可以使用`ax1`和`ax2`来指定不同的Y轴,并使用相应的数据。 下面是一个示例代码,展示了如何在Matplotlib中创建双Y轴图形: ``` import matplotlib.pyplot as plt import numpy as np # 创建数据 x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.exp(x) # 创建图形 fig, ax1 = plt.subplots() # 绘制第一个Y轴 ax1.plot(x, y1, 'r', label='sin(x)') ax1.set_xlabel('x') ax1.set_ylabel('sin(x)', color='r') ax1.tick_params('y', colors='r') ax1.legend() # 创建第二个Y轴 ax2 = ax1.twinx() # 绘制第二个Y轴 ax2.plot(x, y2, 'b', label='exp(x)') ax2.set_ylabel('exp(x)', color='b') ax2.tick_params('y', colors='b') ax2.legend() # 显示图形 plt.show() ``` 这段代码创建了一个包含两个不同数据图形,分别使用红色和蓝色线条表示。左侧红色线条对应第一个Y轴,右侧蓝色线条对应第二个Y轴。可以根据实际情况修改数据的标签、颜色等属性。 希望这个例子能对你有所帮助。如果你需要进一步了解Matplotlib的双Y轴用法,可以参考官方文档或其他教程资源。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值