您好,Stack-Overflow:
我是一个相对初学者,并且在以下任务上卡住了:我想通过单击数据点本身来更改数据点的颜色。我创建了随机子图,但只能在最后一个子图中更改点的颜色(单击其他位置也只会在最后一个子图中更改颜色)。我错过了什么吗?
import numpy as np
import matplotlib.pyplot as plt
import random
import sys
fig, axes = plt.subplots(nrows=5, ncols=3, sharex=True, sharey=True)
xlim = (0, 30)
ylim = (0, 15)
plt.xticks(np.arange(0, 15, 5))
plt.yticks(np.arange(0, 15, 5))
plt.xticks(np.arange(0, 30, 5))
plt.setp(axes, xlim=xlim, ylim=ylim)
for i in range(0, 5, 1):
for j in range(0, 3, 1):
X_t = np.random.rand(10, 4) * 20
points = axes[i][j].scatter(X_t[:, 0], X_t[:, 1],
facecolors=["C0"] * len(X_t), edgecolors=["C0"] * len(X_t), picker=True)
def onpick(event):
print(X_t[event.ind], "clicked")
points._facecolors[event.ind, :] = (1, 1, 0, 1)
points._edgecolors[event.ind, :] = (1, 0, 0, 1)
fig.canvas.draw()
fig.canvas.mpl_connect('pick_event', onpick)
plt.show()
似乎事件.ind中包含的信息不正确,我在错误的时刻请求了那些信息。
我会感激任何帮助!
问候!
(对建议的最佳实践进行编辑)
points
中的点总是最后一个值。但是我如何访问该特定子图中点的信息? - Amadeus