【问题标题】:Python Matplotlib barchart updating color interactivelyPython Matplotlib 条形图以交互方式更新颜色
【发布时间】:2019-04-30 11:39:27
【问题描述】:

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

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

【问题讨论】:

  • 我已经尝试过了,但没有任何区别。实际上,简单的解决方法就是在 on_click 函数中再次绘制条形图。但我只是想了解为什么我无法更改现有条形图的颜色。
  • 尝试删除 set_color 中的 color=。所以它将是Bar.set_color('red')
  • 哦!那行得通!!!!非常感谢。 :D 因为这个原因我昨天浪费了一整天.....我查了 set_color 但不知何故我找不到关于这个函数的明确文档.. 有没有办法让我选择你的答案作为答案?跨度>

标签: python matplotlib dynamic interactive


【解决方案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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 2017-09-24
    • 2020-10-07
    • 2017-09-03
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多