Python Matplotlib条形图交互式更新颜色

时间:2019-04-30 11:39:28

标签: python matplotlib dynamic interactive

我试图了解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 :(得分:-1)

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()