【问题标题】:updating bar chart with matplotlob.pyplot使用 matplotlib.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)

【问题讨论】:

    标签: python matplotlib graph bar-chart jupyter


    【解决方案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 上工作。请参阅我的答案的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 2017-03-12
    • 1970-01-01
    • 2023-03-14
    • 2020-08-04
    • 2012-03-18
    • 1970-01-01
    相关资源
    最近更新 更多