3

我想在 Matplotlib 图中添加一个补丁,例如矩形,其中补丁的位置使用 ax.transData 但大小以像素或点为单位。有没有办法设置这样的转换?还是转换以外的其他方式?

4

1 回答 1

1

这个答案可能来得太晚了,但是如果其他人偶然发现了这个问题:

Matplotlib 文档中有一个示例:

import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import matplotlib.transforms as transforms
fig, ax = plt.subplots()
xdata, ydata = (0.2, 0.7), (0.5, 0.5)
ax.plot(xdata, ydata, "o")
ax.set_xlim((0, 1))

trans = (fig.dpi_scale_trans +
         transforms.ScaledTranslation(xdata[0], ydata[0], ax.transData))

# plot an ellipse around the point that is 150 x 130 points in diameter...
circle = mpatches.Ellipse((0, 0), 150/72, 130/72, angle=40,
                          fill=None, transform=trans)
ax.add_patch(circle)
plt.show()

所以基本上你在转换中对补丁的位置进行编码,然后在位置 (0, 0) 处绘制补丁。

于 2019-06-04T09:23:26.713 回答