python - 如何获取 matplotlib text(x, y, "String", bbox=...) 轴坐标
问题描述
例如,我可以使用圆角框创建文本
fig, ax = plt.subplots(1,1)
obj = ax.text(0.2, 0.6, "something", bbox = dict(boxstyle = 'round'))
现在我想得到图中的圆角框角点。我试过使用
obj.clipbox.corners()
但它不返回情节的点,它与情节中的点不匹配。也尝试过使用
obj.clipbox.transformed(...)
还是不行。我可以在这方面寻求帮助吗?谢谢。
解决方案
首先请注意,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]]
这是文本周围框的数据坐标(第一行左下角,第二行右上角)。
推荐阅读
- pandas - 应用 DateFormatter 和 WeekdayLocator 后,时间序列中的条形图超出最后一个日期
- python - 将函数应用于 DataFrame 中的每个单元格并包含来自特定列的值
- python - UpdateRemotePlugins 不做任何事情 | nvim python 插件
- google-sheets - 在 Google 表格中使用 IMPORTHTML 导入数百个表格是否有更有效的方法?
- powershell - 如何在文本 powershell 上打印
- javascript - React 不会更新下拉选项,并且与 console.log 语句不匹配
- javascript - 如果使用 JS,请不要加载 Division
- kotlin - 如何强制 Kotlin 在 Java 接口中调用特定的重载方法?
- java - 使用 Java 或 JMeter 中的 RequestURL、ConsumerKey 和 ConsumerSecret 生成 OAuth 1.0 Nonce、时间戳和签名
- javascript - 无法通过名称找到角色