python - 有没有办法在散点图中获取单个点的 x 和 y 坐标?
问题描述
我需要获取散点图上某个点的 x 和 y 数据。问题最终来自这样一个事实,即当我创建散点图时,所有点似乎只有一位艺术家。因此,当我尝试从 a 获取数据时PickEvent
,无论我认为我选择哪一点,我都会得到同一个艺术家,并且该艺术家只有所有点的信息,而不仅仅是我想要的点:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(10)
y = np.random.rand(10)
def onpick(event):
print(event.artist.get_offsets())
plt.scatter(x,y, picker=5)
fig = plt.gcf()
cid_pick = fig.canvas.mpl_connect("pick_event", onpick)
单击任何点都会给出:
[[0.45112647259825556 0.4907629706037132]
[0.33787291043006795 0.5887038833531208]
[0.8199764461928875 0.9208354619124024]
[0.895372081518229 0.04417158362163531]
[0.684880991787429 0.7841477288024523]
[0.35336419403882413 0.4661111405652941]
[0.2931993381852086 0.9233951635623667]
[0.14585223675195036 0.1010652948995101]
[0.06953600296535056 0.7883191757749332]
[0.44078084770006243 0.6173437126304926]]
在 THEORY 中,我可以只使用“button_press_event”来获取单击位置的 x 和 y 数据,但随后我必须执行某种最接近的配对算法才能将其与特定点相关联,这似乎有点过度杀戮似乎是一项常见的任务。我的问题是是否有更“内置”的方式来做到这一点?
解决方案
您可以使用event.ind
索引到您从中获得的偏移量get_offsets()
:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(10)
y = np.random.rand(10)
def onpick(event):
print(event.artist.get_offsets()[event.ind][0])
plt.scatter(x,y, picker=5)
fig = plt.gcf()
cid_pick = fig.canvas.mpl_connect("pick_event", onpick)
推荐阅读
- python - 我可以在 Django REST 的模型中使用 ModelViewSet 进行自我父级的 POST 和 GET 操作吗?
- java - 如何垂直放置位图
- python-2to3 - Python 2 到 3 = TypeError:“str”对象的描述符“find”不适用于“bytes”对象
- typescript - 模拟进行外部 API 调用的 Typescript 类
- mongodb - 没有 Confluent Cloud 的 Kafka Connect 和 NoSql 连接器?
- python - Cenpy 库无法获取宾夕法尼亚州匹兹堡的数据
- c# - Xamarin.Forms 网格重叠
- python-3.x - Python:为什么函数中定义的对象在函数返回后没有被垃圾收集
- xml - JAXB 解组多个同名节点
- vue.js - 需要帮助从 JSON 创建对象