Пожалуйста, предоставьте способ, чтобы вместо установки новых цветов вручную я мог задать один новый цвет до длины меток, пока происходит событие наведения мыши.
Я пробовал использовать библиотеку numpy, но она не сработала. Посмотрите на код:
импорт matplotlib.pyplot как plt
labels = 'A', 'B', 'C', 'D'
sizes = [10, 35, 50, 5]
explode = (0, 0, 0.1, 0) # only "explode" the 3rd slice (i.e. 'C')
fig1, ax1 = plt.subplots()
wedges, _, __ = ax1.pie(sizes, explode=explode,
labels=labels,autopct='%1.1f%%',shadow=True, startangle=90)
ax1.axis('equal')
ocols= [w.get_facecolor() for w in wedges]
ncols= ["gold", "indigo", "purple", "salmon"]
def update(event):
if event.inaxes == ax1:
for i, w in enumerate(wedges):
if w.contains_point([event.x, event.y]):
w.set_facecolor(ncols[i])
else:
w.set_facecolor(ocols[i])
fig1.canvas.draw_idle()
fig1.canvas.mpl_connect("motion_notify_event", update)
plt.show()
ncols = ocols[np.where((ocols=='red').all(axis=2))]= ['grey']
Я пробовал это, но происходит ошибка с указанием:
ncols = ocols[np.where((ocols=='red').all(axis=2))]= ['grey']
AttributeError: 'bool' object has no attribute 'all'