我想在 Matplotlib 图中添加一个补丁,例如矩形,其中补丁的位置使用 ax.transData 但大小以像素或点为单位。有没有办法设置这样的转换?还是转换以外的其他方式?
问问题
294 次
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 回答