Обновление цвета Python Matplotlib в интерактивном режиме - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь понять интерактивные сюжеты в matplotlib (в Jupyter Notebook).

Вот фрагмент кода, и я хотел бы знать, почему это не работает.

import matplotlib.pyplot as plt
%matplotlib notebook

fig, ax = plt.subplots()

BarChart = ax.bar(df.index, df.mean(axis=1), color = 'black')

def on_click(event):
    for Bar in BarChart:
        Bar.set_color(color='red')

fig.canvas.mpl_connect('button_press_event', on_click)

plt.show()

Может кто-нибудь объяснить мне, почему это не обновляет цвет полос на красный и как это исправить?

Когда цикл for используется в статическом случае, т. Е. Без функций on_click и mpl_connect, он обновляет цвета полосы в исходном графике.

Мне было интересно, нужно ли мне выражение для явного обновления сюжета.

1 Ответ

0 голосов
/ 30 апреля 2019

Bar - это прямоугольный патч, поэтому вы можете использовать set_color для изменения цвета полос.Однако он не принимает color в качестве аргумента ключевого слова.В документах вам необходимо использовать аргумент c

. Поэтому вы можете удалить color= или заменить его на c=

import matplotlib.pyplot as plt
%matplotlib notebook

fig, ax = plt.subplots()

BarChart = ax.bar(df.index, df.mean(axis=1), color = 'black')

def on_click(event):
    for Bar in BarChart:
        Bar.set_color('red')
        # Bar.set_color(c='red')  # this also works

fig.canvas.mpl_connect('button_press_event', on_click)

plt.show()
...