例如,我可以使用
创建带圆角框的文本fig, ax = plt.subplots(1,1)
obj = ax.text(0.2, 0.6, "something", bbox = dict(boxstyle = 'round'))
现在我想获得情节中的圆角框角点。我尝试过使用
obj.clipbox.corners()
但它没有返回情节的点,它与情节中的点不匹配。也尝试过使用
obj.clipbox.transformed(...)
仍然无效。我可以请求帮助吗?感谢。
答案 0 :(得分:0)
首先请注意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]]
是文本框周围的数据坐标(第一行左下角,第二行右上角)。