如何获取matplotlib文本(x,y,“String”,bbox=…)轴坐标

2024-03-29 05:53:08 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我可以使用

fig, ax = plt.subplots(1,1)
obj = ax.text(0.2, 0.6, "something", bbox = dict(boxstyle = 'round'))

现在我想得到图中的圆角点。我试过使用

obj.clipbox.corners()

但它不返回绘图的点,它与绘图中的点不匹配。也尝试过使用

obj.clipbox.transformed(...)

还是不行。我可以在这方面寻求帮助吗?谢谢。你知道吗


Tags: textobj绘图figpltaxdictsomething
1条回答
网友
1楼 · 发布于 2024-03-29 05:53:08

首先请注意,clipbox是剪辑艺术家的方框。这通常是轴边界框。因此,它与文本周围的框无关。你知道吗

现在你可以通过

obj = ax.text(...)
box = obj.get_bbox_patch()

问题是文本周围框的大小和位置只有在实际绘制文本时才能确定。在此之前,它不知道它在哪里。你知道吗

所以首先你需要画画布。这将更新长方体的坐标。然后可以通过box.get_window_extent()获得框的窗口范围。这将给出显示空间中的坐标(图形的像素),因此需要将它们转换回数据坐标。你知道吗

fig.canvas.draw()
coords = ax.transData.inverted().transform(box.get_window_extent())
print(coords)

这个指纹

[[ 0.19159946  0.58060967]
 [ 0.35633401  0.64103535]]

这是文本周围框的数据坐标(第一行左下角,第二行右上角)。你知道吗

相关问题 更多 >