获取 Matplotlib 绘图标签坐标

2024-02-15

我想访问图中的所有标签坐标。

例如,我画两条线并显示图例:

import matplotlib.pyplot as plt
plt.plot([1,2],label="first_image")
plt.plot([2,1],label="second_image")
plt.legend()
plot.show()

我想获取下图中所有圆圈标签的位置:


您可以使用以下命令获取大多数艺术家在窗口坐标中的位置get_window_extent() method.

为了能够使用此方法,艺术家需要事先被绘制到画布上。这可以通过手动触发plt.gcf().canvas.draw().

import matplotlib.pyplot as plt
plt.plot([1,2],label="first_image")
plt.plot([2,1],label="second_image")
leg = plt.legend()

plt.gcf().canvas.draw()
ticks = [t for t in plt.gca().get_xticklabels()]
for i, t in enumerate(ticks):
    print "Label {}, data: {}".format(i, t.get_text()), t.get_window_extent()
print "Legend location: ", leg.get_window_extent()
for i, l in enumerate(leg.texts):
    print "Label {}, {}".format(i, l.get_text()), l.get_window_extent()
plt.show()

这将打印所有相关坐标

Label 0, data:  Bbox(x0=102.545454545, y0=43.0777777778, x1=102.545454545, y1=43.0777777778)
Label 1, data: 0.0 Bbox(x0=91.6079545455, y0=29.0777777778, x1=113.482954545, y1=43.0777777778)
Label 2, data: 0.2 Bbox(x0=181.789772727, y0=29.0777777778, x1=203.664772727, y1=43.0777777778)
Label 3, data: 0.4 Bbox(x0=271.971590909, y0=29.0777777778, x1=293.846590909, y1=43.0777777778)
Label 4, data: 0.6 Bbox(x0=362.090909091, y0=29.0777777778, x1=384.090909091, y1=43.0777777778)
Label 5, data: 0.8 Bbox(x0=452.272727273, y0=29.0777777778, x1=474.272727273, y1=43.0777777778)
Label 6, data: 1.0 Bbox(x0=542.454545455, y0=29.0777777778, x1=564.454545455, y1=43.0777777778)
Label 7, data:  Bbox(x0=102.545454545, y0=43.0777777778, x1=102.545454545, y1=43.0777777778)
Legend location:  Bbox(x0=419.305555556, y0=214.431597222, x1=569.055555556, y1=260.768402778)
Label 0, first_image Bbox(x0=463.75, y0=241.072222222, x1=541.375, y1=255.212847222)
Label 1, second_image Bbox(x0=463.75, y0=219.987152778, x1=563.5, y1=234.127777778)

但请注意,通常不需要或建议将这些坐标用于图形内部的任何操作,因为它们可能会在每次重绘时发生变化。根据使用情况,可能有更好的方法来实现特定目标。

另请注意,这些坐标不一定是保存图像中的像素坐标。这些将取决于dpi屏幕上的图像和保存的图像之间的设置可能不同。此外,用于保存的后端可能会重新绘制画布,这可能会改变坐标。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 Matplotlib 绘图标签坐标 的相关文章

随机推荐

  • 如何在expo React Native App中将api级别29更改为30

    当我将应用程序包上传到 Play 商店时出现此消息 您的应用程序当前面向 API 级别 29 并且必须至少面向 API 级别 30 以确保它基于针对安全性和性能进行优化的最新 API 构建 将应用程序的目标 API 级别更改为至少 30 如
  • 检测WinRT和Windows 8之间的差异

    对于统计跟踪 我希望能够判断应用程序是在 Windows RT 还是 Windows Pro 上运行 该线程表示无法获取系统版本信息 在 WinRT Metro 应用程序 C 中获取操作系统版本 https stackoverflow co
  • Python:嵌套循环

    考虑一下 gt gt gt a one two bad good gt gt gt for i in a for x in i print x one two bad good 我该如何编写这段代码 但使用如下语法 for i in a p
  • 如何更改 Visual Studio 2012、2013 或 2015 许可证密钥?

    我的机器上有一份 Visual Studio 2012 Pro 的副本 带有一个序列号 但我不再使用它 因为我必须使用另一个序列号 我的问题是我一直卸载 Visual Studio 但重新安装后注册信息仍然存在 并且我无法弄清楚我必须删除哪
  • 使用反射和枚举进行 MVC 应用程序访问的逻辑控制是否安全?

    Trying to manage access to a web site I created some necessary entities 目标是为我的 MVC 应用程序的某些控制器的操作方法使用自定义权限属性 Permissions
  • redis:备份dump.rdb

    Context 我有一个正在运行的 redis 服务器 我想做一个备份 Idea 我想做以下事情 cp dump rdb some other location 06 24 2012 rdb Concern 我没有看到任何东西向我承诺 du
  • 使用 ExecutorService 时出现 CancellationException

    我想等待两个任务完成然后返回它们的结果 但有时我会收到此错误 为什么 CancellationException从哪里来 public class ShouldVoteTask extends AbstractWorkerTask
  • python -m 用于预提交

    pip3 install pre commit gt 已安装 我都试过了python3 m pre commit version and pre commit version 它说找不到模块 我正在使用 Pycharm 并从 Github
  • Appium - 创建会话 - 错误:应提供 JSONWP 或 W3C 功能

    我无法让 Appium 启动 Android 会话 并且在网上搜索时没有找到与我收到的错误消息相关的任何内容 当我运行测试时 Appium 转储此日志 debug MJSONWP Calling AppiumDriver createSes
  • 用于在 Google 表格中进行多次查找和替换的 Google Apps 脚本

    关于 Stack Exchange 的第一个问题 希望它有意义 一些背景 我在学校环境中工作 并协助学习支持人员为某些学生创建更易读的时间表 他们从我们的网站复制时间表数据 其中包含科目代码 教师姓名和房间号 它的格式与您在下图中看到的格式
  • AngularJS 和怪异模式:IE8+ 上的空白屏幕

    我正在开发一个 Angular 项目 该项目将包含在我无法控制的 HTML 页面中 实际上我只能访问里面的内容元素 有许多限制并不容易处理 1 我无法更改文档类型 2 我无法删除此元标记 3 应用程序必须加载 XML 文件 我设法克服了第
  • 如何在 Eclipse-Helios JDT 中专门抑制“比较相同表达式”

    我尝试用注释封闭方法 SuppressWarnings compareIdentical 但这不起作用 更糟糕的是 注释会产生自己的结果 Unsupported SuppressWarnings compareIdentical 警告 我知
  • Xcode源代码控制查看历史修改文件失败

    I used Xcode要连接的源代码控制SVN服务器 查看源代码后 我执行了commit update 一切正常 但是当我点击源代码控制 gt 历史记录 然后单击 显示修改的文件 然后显示一个警报对话框 源代码管理操作失败 因为找不到工作
  • 如何与本机桌面 (win) 应用程序建立对等连接

    我需要与本机桌面 win 应用程序和网络浏览器建立对等连接 只是为了传输原始数据 从理论上讲 WebRTC 似乎是实现这一目标的唯一方法 如果您想使用 WebRTC 在浏览器和桌面之间交换数据 您可以使用此库将桌面部分编码为 C 语言 ht
  • 在 Android Activity 中从软件键盘监听 Webview 按键事件

    是否可以在 Android 主机应用程序中处理来自 Web 视图的软件键盘事件 例如 我的应用程序的 Activity 是否可以侦听显示 Google 网站的 Web 视图的搜索字段中键入的内容 考虑到下面描述的方法 如果我覆盖它返回 tr
  • 如何在 Python 中使用递归反转列表?

    我想要一个函数 它会使用递归返回给定列表的相反内容 我怎样才能做到这一点 将列表的第一个元素附加到反向子列表 mylist 1 2 3 4 5 backwards lambda l backwards l 1 l 1 if l else p
  • XML 解析使用但元素名称是动态的

    Simple XMLElement Object IpStatus gt 1 ti pid 20642 gt SimpleXmlElement Object 我有一个上面格式的 SimpleXMLElment 这个 XML 是在运行时生成的
  • Sailsjs 是否可以构建更复杂的模型

    我想在我的模型中包含数组或集合 这对于水线 mongoDB 来说是可能的吗 周围还有其他选择吗 example name Bundle col1 name anOtherModel subCol text aString col2 name
  • 在大表上使用 LIKE 操作时 MySQL 查询速度慢

    我有一个相当大的表 6 GB 并且在此查询上遇到性能问题 SELECT f TIME FORMAT f scheme H i as scheme TIME FORMAT f actual H i as actual DATE FORMAT
  • 获取 Matplotlib 绘图标签坐标

    我想访问图中的所有标签坐标 例如 我画两条线并显示图例 import matplotlib pyplot as plt plt plot 1 2 label first image plt plot 2 1 label second ima