简介
在本教程中,我们将学习如何使用 Matplotlib 创建和自定义图表。Matplotlib 是一个 Python 库,它提供了广泛的工具,用于在 Python 中创建静态、动画和交互式可视化。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
导入 Matplotlib 和 NumPy 库
第一步是导入库。我们将使用 Matplotlib 的pyplot模块和numpy库。
import matplotlib.pyplot as plt
import numpy as np
创建图形和子图
下一步是创建一个图形和子图。我们将使用subplots函数创建一个包含两个并排子图的图形。
fig, (ax0, ax1) = plt.subplots(ncols=2, figsize=(7, 4))
设置纵横比并绘制数据
现在,我们将使用set_aspect函数将第一个子图的纵横比设置为 1,并使用plot函数绘制一些数据。
ax0.set_aspect(1)
ax0.plot(np.arange(10))
自定义轴标签
要自定义轴标签,我们可以使用set_xlabel和set_ylabel函数。我们还可以使用“\n”字符添加换行符。
ax0.set_xlabel('this is a xlabel\n(with newlines!)')
ax0.set_ylabel('this is vertical\ntest', multialignment='center')
向绘图中添加文本
我们可以使用text函数向绘图中添加文本。我们可以指定文本的位置、旋转角度、水平和垂直对齐方式以及多行对齐方式。
ax0.text(2, 7, 'this is\nyet another test',
rotation=45,
horizontalalignment='center',
verticalalignment='top',
multialignment='center')
添加网格线
要向绘图中添加网格线,我们可以使用grid函数。
ax0.grid()
向第二个子图添加多行文本
在第二个子图中,我们将使用text函数添加多行文本。我们可以指定文本的位置、大小、垂直和水平对齐方式以及文本框(bbox)。
ax1.text(0.29, 0.4, "Mat\nTTp\n123", size=18,
va="baseline", ha="right", multialignment="left",
bbox=dict(fc="none"))
ax1.text(0.34, 0.4, "Mag\nTTT\n123", size=18,
va="baseline", ha="left", multialignment="left",
bbox=dict(fc="none"))
ax1.text(0.95, 0.4, "Mag\nTTT$^{A^A}$\n123", size=18,
va="baseline", ha="right", multialignment="left",
bbox=dict(fc="none"))
自定义 X 轴标签
要自定义 X 轴标签,我们可以使用set_xticks函数。我们可以指定刻度的位置和标签。
ax1.set_xticks([0.2, 0.4, 0.6, 0.8, 1.],
labels=["Jan\n2009", "Feb\n2009", "Mar\n2009", "Apr\n2009",
"May\n2009"])
向第二个子图添加一条水平线和标题
要向第二个子图添加一条水平线,我们可以使用axhline函数。我们还可以使用set_title函数为子图添加一个标题。
ax1.axhline(0.4)
ax1.set_title("test line spacing for multiline text")
调整子图位置并显示绘图
最后,我们可以使用subplots_adjust函数调整子图的位置,并使用show函数显示绘图。
fig.subplots_adjust(bottom=0.25, top=0.75)
plt.show()
总结
在本教程中,我们学习了如何使用 Matplotlib 创建和自定义绘图。我们涵盖了如何创建图形和子图、绘制数据、自定义轴标签、向绘图添加文本、添加网格线、自定义 x 轴标签、向绘图添加水平线和标题以及调整子图位置。Matplotlib 提供了广泛的工具,用于在 Python 中创建静态、动画和交互式可视化,使其成为一个强大的数据可视化库。