У меня есть несколько matplolib.pyplot
цифр.У каждого есть легенда, и я хочу, чтобы щелчок по линии на легенде скрывал ее на рисунке.Обработка событий щелчка была найдена здесь: https://matplotlib.org/examples/event_handling/legend_picking.html
Это прекрасно работает, когда есть только одна цифра, но когда их несколько, она работает только с последней цифрой.Когда я нажимаю на легенду другой фигуры, я не получаю никаких исключений или предупреждений, но ничего не происходит.
Вот пример кода, который имеет эту проблему:
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(0,10,1)
b = np.arange(0,20,2)
c = np.arange(0,5,.5)
d = np.arange(-1,9,1)
lined = {}
for var1, var2 in [(a,b), (c,d)]:
fig, ax = plt.subplots()
line1, = ax.plot(var1, label="l1")
line2, = ax.plot(var2, label="l2")
leg = fig.legend([line1, line2], ["l1", "l2"])
legl1, legl2 = leg.get_lines()
legl1.set_picker(5)
lined[legl1] = line1
legl2.set_picker(5)
lined[legl2] = line2
def onpick(event, figu):
legl = event.artist
origl = lined[legl]
vis = not origl.get_visible()
origl.set_visible(vis)
if vis:
legl.set_alpha(1.0)
else:
legl.set_alpha(0.2)
figu.canvas.draw()
fig.canvas.mpl_connect('pick_event', lambda ev: onpick(ev, fig))
plt.show()
Как я могу сделатьсобытие click тоже работает на первом рисунке?