Matplotlib 偏移复制

PythonPythonBeginner
立即练习

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

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

简介

在本实验中,我们将学习如何使用 transforms.offset_copy 将绘图元素(如文本字符串)相对于以任何坐标给出的位置,在屏幕坐标中的指定偏移量处定位。我们将使用 Python 中的 Matplotlib 库创建一个散点图和一个极坐标图,然后使用 offset_copy 向每个图中添加文本。

虚拟机提示

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

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

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

导入库

我们将首先导入必要的库:numpymatplotlib.pyplot

import numpy as np
import matplotlib.pyplot as plt

创建数据

接下来,我们将创建一些用于绘图的数据。我们将使用 numpy 创建两个数组 xsys,它们将用作散点图的 x 坐标和 y 坐标。

xs = np.arange(7)
ys = xs**2

创建散点图

现在我们将使用 matplotlib.pyplot 中的 plot 函数创建一个散点图。

fig = plt.figure(figsize=(5, 10))
ax = plt.subplot(2, 1, 1)

## 绘制数据
for x, y in zip(xs, ys):
    plt.plot(x, y, 'ro')

向散点图添加文本

现在我们将使用 offset_copy 向散点图添加文本。我们首先创建一个变换,该变换将文本相对于以任何坐标给出的位置,在屏幕坐标中的指定偏移量处定位。然后,我们将使用 matplotlib.pyplot 中的 text 函数将文本添加到图中。

## 创建变换
trans_offset = mtransforms.offset_copy(ax.transData, fig=fig,
                                       x=0.05, y=0.10, units='inches')

## 向图中添加文本
for x, y in zip(xs, ys):
    plt.text(x, y, '%d, %d' % (int(x), int(y)), transform=trans_offset)

创建极坐标图

现在我们将使用 matplotlib.pyplot 中的 polar 函数创建一个极坐标图。

ax = plt.subplot(2, 1, 2, projection='polar')

## 绘制数据
for x, y in zip(xs, ys):
    plt.polar(x, y, 'ro')

向极坐标图添加文本

最后,我们将使用 offset_copymatplotlib.pyplot 中的 text 函数向极坐标图添加文本。

## 创建变换
trans_offset = mtransforms.offset_copy(ax.transData, fig=fig,
                                       y=6, units='dots')

## 向图中添加文本
for x, y in zip(xs, ys):
    plt.text(x, y, '%d, %d' % (int(x), int(y)),
             transform=trans_offset,
             horizontalalignment='center',
             verticalalignment='bottom')

总结

在本实验中,我们学习了如何使用 transforms.offset_copy 将绘图元素相对于以任何坐标给出的位置,在屏幕坐标中的指定偏移量处定位。我们使用此函数向使用 Python 中的 matplotlib.pyplot 库创建的散点图和极坐标图添加文本。