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

Python Matplotlib barchart updating color interactively

我正在尝试理解 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 函数时,它会更新原始图中的条形颜色。

我想知道我是否需要一个表达式来显式更新情节。

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