使用 matplotlib.pyplot 更新条形图

Posted

技术标签:

【中文标题】使用 matplotlib.pyplot 更新条形图【英文标题】:updating bar chart with matplotlob.pyplot 【发布时间】:2022-01-12 22:27:04 【问题描述】:

我正在尝试使用新数据更新条形图。 我不能使用 FuncAnimation,所以我想使用 for 循环。 我正在通过 Jupyter 使用 Python

我做错了什么?谢谢

import matplotlib.pyplot as plt


data1 = [6,7,5,6,8,6,9,7]
data2 = [2,3,5,6,7,8,4,2]
data3 = [4,2,1,3,5,6,6,7]
data4 = [1,6,5,4,3,2,11,9]
data5 = [6,7,5,6,8,6,9,7]
data6 = [2,3,5,6,7,8,4,2]
data7 = [4,2,1,3,5,6,6,7]
data8 = [1,6,5,4,1,2,11,9]
data = [data1,data2,data3,data4,data5,data6,data7,data8]
name = "area1"

fig = plt.figure(figsize=(14,8))
fig.canvas.manager.set_window_title("area_1")


plt.ion()

ax = plt.axes()
ax.set_facecolor("#BCECE0")
plt.title(name, color="#F652A0")

rects = plt.bar(range(len(data)), 0, tick_label=range(len(data)), color="#4C5270")
plt.legend()
plt.show()


for i in range(8):
   for rect,h in zip(rects,data[i]):
      rect.set_height(h)
   fig.canvas.draw()
   plt.pause(1)

【问题讨论】:

【参考方案1】:

我建议改编here 中的一些想法。 例如,在下面的代码中,我通过使用 rect.set_height(h) 传递每个条形的值来更新 8 帧中的每一帧的条形图。见以下代码:

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
%matplotlib notebook

data1 = [6,7,5,6,8,6,9,7]
data2 = [2,3,5,6,7,8,4,2]
data3 = [4,2,1,3,5,6,6,7]
data4 = [1,6,5,4,3,2,11,9]
data5 = [6,7,5,6,8,6,9,7]
data6 = [2,3,5,6,7,8,4,2]
data7 = [4,2,1,3,5,6,6,7]
data8 = [1,6,5,4,1,2,11,9]
data = [data1,data2,data3,data4,data5,data6,data7,data8]  

fig,ax = plt.subplots()
name = "area1"
ax.set_facecolor("#BCECE0")
plt.title(name, color="#F652A0")

N_bars=len(data[0])
rects = plt.bar(range(N_bars), data[0],  align ='center',color="#4C5270")
plt.ylim([0,np.amax(data)])
for i in range(N_bars):
    dat=data[i]
    for rect, h in zip(rects, dat):
        rect.set_height(h)
        
    fig.canvas.draw()
    plt.savefig('fig-'+str(i)+'.png')
    plt.pause(1)

plt.show()

输出给出:

【讨论】:

非常感谢。现在的问题是它适用于 Pycharm,但不适用于 Jupyter。我在 Jupiter 中运行它只是在下面添加未更新的新图表 您需要添加 %matplotlib notebook 才能在 jupyter notebook 上工作。请参阅我的答案的编辑。

以上是关于使用 matplotlib.pyplot 更新条形图的主要内容,如果未能解决你的问题,请参考以下文章

如何将货币格式添加到 matplotlib.pyplot.text? [复制]

python的绘图工具matplotlib.pyplot

Matplotlib 条形图:对角刻度标签

Matplotlib.pyplot 常用方法

Python Matplotlib – 在 x 轴上代表采样位置的条形图

python绘制带有负百分比的饼状图