在Matplotlib中,可以使用scatter
函数绘制散点图,并通过指定c
参数来设置点的颜色。要根据图例的点击事件来更改一组点的颜色,可以使用以下步骤:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.rand(100)
y = np.random.rand(100)
colors = np.random.rand(100)
PathCollection
对象:scatter = plt.scatter(x, y, c=colors)
legend = plt.legend(*scatter.legend_elements(), title="Colors")
def on_legend_click(event):
index = event.ind[0] # 获取点击的图例索引
new_color = np.random.rand(3) # 生成新的随机颜色
scatter.set_facecolor(new_color) # 设置散点的颜色
legend.legendHandles[index].set_color(new_color) # 设置图例的颜色
plt.draw() # 重新绘制图形
legend.get_frame().set_picker(True) # 允许图例接收点击事件
plt.gcf().canvas.mpl_connect('pick_event', on_legend_click) # 绑定点击事件处理函数
完整的代码如下所示:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.rand(100)
y = np.random.rand(100)
colors = np.random.rand(100)
scatter = plt.scatter(x, y, c=colors)
legend = plt.legend(*scatter.legend_elements(), title="Colors")
def on_legend_click(event):
index = event.ind[0]
new_color = np.random.rand(3)
scatter.set_facecolor(new_color)
legend.legendHandles[index].set_color(new_color)
plt.draw()
legend.get_frame().set_picker(True)
plt.gcf().canvas.mpl_connect('pick_event', on_legend_click)
plt.show()
这段代码会生成一个散点图,每个点的颜色都是随机生成的。当点击图例中的某个颜色时,会随机生成一个新的颜色,并将该组点的颜色更改为新的颜色。
领取专属 10元无门槛券
手把手带您无忧上云