在 Matplotlib 中使用寄生轴创建多图

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何使用Python Matplotlib中的寄生轴创建多数据集图。我们将使用 mpl_toolkits.axes_grid1.parasite_axes.host_subplotmpl_toolkits.axisartist.axislines.Axes 创建具有多个y轴的图。

虚拟机提示

虚拟机启动完成后,点击左上角切换到笔记本标签页以访问Jupyter Notebook进行练习。

有时,你可能需要等待几秒钟让Jupyter Notebook完成加载。由于Jupyter Notebook的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,请随时向Labby提问。课程结束后提供反馈,我们将立即为你解决问题。

导入库

首先,我们需要导入必要的库。我们将使用 matplotlib.pyplot 进行绘图,并使用 mpl_toolkits 创建寄生轴。

import matplotlib.pyplot as plt
from mpl_toolkits import axisartist
from mpl_toolkits.axes_grid1 import host_subplot

创建宿主轴和寄生轴

我们将使用 host_subplot()twinx() 函数创建一个宿主轴和两个寄生轴。host_subplot() 函数创建一个宿主轴,而 twinx() 函数创建与宿主轴共享相同 x 轴的寄生轴。

host = host_subplot(111, axes_class=axisartist.Axes)
plt.subplots_adjust(right=0.75)

par1 = host.twinx()
par2 = host.twinx()

调整寄生轴

我们需要调整寄生轴的位置。new_fixed_axis() 函数用于在绘图右侧创建一个新的 y 轴。toggle() 函数用于开启右侧 y 轴的所有刻度和标签。

par2.axis["right"] = par2.new_fixed_axis(loc="right", offset=(60, 0))

par1.axis["right"].toggle(all=True)
par2.axis["right"].toggle(all=True)

绘制数据

我们将在同一图表上绘制三个数据集:密度、温度和速度。我们将使用 plot() 函数来绘制数据。

p1, = host.plot([0, 1, 2], [0, 1, 2], label="Density")
p2, = par1.plot([0, 1, 2], [0, 3, 2], label="Temperature")
p3, = par2.plot([0, 1, 2], [50, 30, 15], label="Velocity")

设置轴的范围和标签

我们将使用 set() 函数为每个轴设置 x 轴和 y 轴的范围及标签。

host.set(xlim=(0, 2), ylim=(0, 2), xlabel="Distance", ylabel="Density")
par1.set(ylim=(0, 4), ylabel="Temperature")
par2.set(ylim=(1, 65), ylabel="Velocity")

添加图例和颜色

我们将使用 legend()label.set_color() 函数为图表添加图例,并将每个轴的标签颜色设置为与相应数据集的颜色匹配。

host.legend()

host.axis["left"].label.set_color(p1.get_color())
par1.axis["right"].label.set_color(p2.get_color())
par2.axis["right"].label.set_color(p3.get_color())

显示图表

最后,我们将使用 show() 函数来显示图表。

plt.show()

总结

在本实验中,我们学习了如何在Python的Matplotlib中使用寄生轴来创建一个包含多个数据集的图表。我们使用了 mpl_toolkits.axes_grid1.parasite_axes.host_subplotmpl_toolkits.axisartist.axislines.Axes 来创建一个具有多个y轴的图表。我们还学习了如何调整寄生轴的位置、绘制数据、设置轴的范围和标签、为图表添加图例和颜色以及显示图表。