【问题标题】:update matplotlib plot更新 matplotlib 图
【发布时间】:2012-10-17 20:30:44
【问题描述】:

我正在尝试如下更新 matplotlib 图:

import matplotlib.pyplot as plt
import matplotlib.dates as mdate
import numpy as np

plt.ion()

fig = plt.figure()
ax = fig.add_subplot(111)

for i,(_,_,idx) in enumerate(local_minima):
    dat = dst_data[idx-24:idx+25]
    dates,values = zip(*dat)
    if i == 0:
        assert(len(dates) == len(values))
        lines2d, = ax.plot_date(mdate.date2num(dates), np.array(values), linestyle='-')
    else:
        assert(len(dates) == len(values))
        lines2d.set_ydata(np.array(values))
        lines2d.set_xdata(mdate.date2num(dates))  #This line causes problems.

        fig.canvas.draw()
    raw_input()

第一次循环时,情节显示得很好。第二次通过循环,我的情节上的所有数据都消失了——如果我不包括lines2d.set_xdata 行,一切正常(当然,x 数据点是错误的除外)。我看过以下帖子:

How to update a plot in matplotlib?

Update Lines in matplotlib

但是,在这两种情况下,用户只更新ydata,我也想更新xdata

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    与典型案例一样,写下一个问题的行为激发了我去研究一种我以前没有想到的可能性。 x 数据 正在更新,但绘图范围未更新。当我将新数据放在图上时,一切都超出了范围。解决方案是添加:

    ax.relim()
    ax.autoscale_view(True,True,True)
    

    (partial reference)


    这是原始问题上下文中的代码,希望有一天对其他人有所帮助:

    import matplotlib.pyplot as plt
    import matplotlib.dates as mdate
    import numpy as np
    
    plt.ion()
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    for i,(_,_,idx) in enumerate(local_minima):
        dat = dst_data[idx-24:idx+25]
        dates,values = zip(*dat)
        if i == 0:
            assert(len(dates) == len(values))
            lines2d, = ax.plot_date(mdate.date2num(dates), np.array(values), linestyle='-')
        else:
            assert(len(dates) == len(values))
            lines2d.set_ydata(np.array(values))
            lines2d.set_xdata(mdate.date2num(dates))  #This line causes problems.
            ax.relim()
            ax.autoscale_view(True,True,True)
            fig.canvas.draw()
        raw_input()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-28
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-13
      • 2017-03-18
      相关资源
      最近更新 更多