使用坐标系为 Matplotlib 图表添加注释

PythonPythonBeginner
立即练习

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

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

简介

Matplotlib 是一个功能强大的可视化工具,它允许用户创建各种各样的图表。注释是 Matplotlib 的一个重要功能,它允许用户在图表中添加文本和箭头。在本教程中,我们将学习如何在注释中使用不同的坐标系。

虚拟机使用提示

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

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

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

导入库

第一步是导入必要的库。我们将使用 matplotlib.pyplot 库来创建图表和注释。

import matplotlib.pyplot as plt
import numpy as np

创建数据

接下来,我们将创建一些要绘制的数据。我们将使用 numpy 库来创建一个正弦波。

x = np.arange(0, 10, 0.005)
y = np.exp(-x/2.) * np.sin(2*np.pi*x)

创建图表

现在,我们将使用 matplotlib.pyplot 库来创建图表。我们将设置图表的 x 轴和 y 轴范围,然后绘制数据。

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlim(0, 10)
ax.set_ylim(-1, 1)

转换坐标

下一步是转换数据和显示的坐标。我们将使用 ax.transData 方法来转换数据坐标,并使用 figure pixels 坐标系来转换显示坐标。

xdata, ydata = 5, 0
xdisplay, ydisplay = ax.transData.transform((xdata, ydata))

添加注释

最后一步是给图表添加注释。我们将使用 ax.annotate 方法在图表上添加文本和箭头。我们还将使用 bboxarrowprops 参数来设置注释的样式。

bbox = dict(boxstyle="round", fc="0.8")
arrowprops = dict(
    arrowstyle="->",
    connectionstyle="angle,angleA=0,angleB=90,rad=10")

offset = 72
ax.annotate(
    f'data = ({xdata:.1f}, {ydata:.1f})',
    (xdata, ydata),
    xytext=(-2*offset, offset), textcoords='offset points',
    bbox=bbox, arrowprops=arrowprops)
ax.annotate(
    f'display = ({xdisplay:.1f}, {ydisplay:.1f})',
    xy=(xdisplay, ydisplay), xycoords='figure pixels',
    xytext=(0.5*offset, -offset), textcoords='offset points',
    bbox=bbox, arrowprops=arrowprops)

显示图表

最后一步是使用 plt.show() 方法显示图表。

plt.show()

总结

在本教程中,我们学习了如何在 Matplotlib 中使用不同的坐标系进行注释。我们创建了一个图表,转换了数据和显示坐标,并使用 ax.annotate 方法向图表添加了注释。注释是 Matplotlib 的一项重要功能,它允许用户为图表添加背景信息。