【发布时间】:2021-08-13 00:10:21
【问题描述】:
我正在尝试关注this demo 处理散点图上的拾取事件。该演示适用于单个散点图。但是,当我添加第二个散点图时,我只能在单击这些点时获得其中一个图的索引。这是我的代码:
import matplotlib.pyplot as plt
import numpy as np
from numpy.random import rand
def pick_scatter_plot():
# picking on a scatter plot (matplotlib.collections.RegularPolyCollection)
x, y, c, s = rand(4, 2)
def onpick3(event):
ind = event.ind
print('onpick3 scatter:', ind, x[ind], y[ind])
fig, ax = plt.subplots()
#first scatter plot:
ax.scatter(x, y, 100, c, marker='o', picker=True)
#second scatted plot
ax.scatter(x*2, y, 50, c, marker='s', picker=True)
fig.canvas.mpl_connect('pick_event', onpick3)
if __name__ == '__main__':
pick_scatter_plot()
plt.show()
第一组用标记“o”绘制,第二组用标记“s”绘制,如下所示:
但是,当我点击所有四个点时,我只能得到 0 和 1 的索引。这是我一一点击所有 4 个点时的输出:
('onpick3 scatter:', array([1], dtype=int32), array([0.18243891]), array([0.30505569]))
('onpick3 scatter:', array([1], dtype=int32), array([0.18243891]), array([0.30505569]))
('onpick3 scatter:', array([0], dtype=int32), array([0.35977978]), array([0.66748979]))
('onpick3 scatter:', array([0], dtype=int32), array([0.35977978]), array([0.66748979]))
我的问题是如何正确访问两个散点图的点的索引?将所有数据组合成一个散点图对我来说不起作用,因为我需要用不同的标记绘制多组数据,而scatter 不允许使用标记列表。
【问题讨论】:
标签: python matplotlib data-visualization