如何使用点/英寸尺寸在matplotlib中绘制形状?
我已经阅读了补丁/转换文档,因此我了解了如何在像素,数据,轴或图形坐标中工作,但我无法弄清楚如何以点/英寸标注矩形。
理想情况下,我想在数据坐标中放置一个矩形,但是将其大小设置为点,就像行标记的工作方式一样。
以下是我要创建的图表示例。我目前将黑色和红色框放在(数据,轴)坐标中。当图形是已知大小时,这种方法有效,但当它重新调整时,即使文本大小不变,框也会变小,这会失败。
答案 0 :(得分:2)
在这个问题的帮助下结束了这个问题:How do I offset lines in matplotlib by X points
没有内置的方法来指定点中的补丁尺寸,因此您必须手动计算轴或数据坐标与英寸/点的比率。这个比例当然会根据图形/轴的大小而变化。
这是通过在轴变换中运行(1,1)点并查看它在像素坐标中的最终位置来实现的。然后可以通过图dpi将像素转换为英寸或点。
t = axes.transAxes.transform([(0,0), (1,1)])
t = axes.get_figure().get_dpi() / (t[1,1] - t[0,1]) / 72
# Height = 18 points
height = 18 * t