gpt4 book ai didi

python - 更新 matplotlib 图

转载 作者:太空狗 更新时间:2023-10-30 01:09:29 24 4
gpt4 key购买 nike

我正在尝试按如下方式更新 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

最佳答案

与典型案例一样,写问题的行为激发了我去研究一种我以前没有想到的可能性。 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()

关于python - 更新 matplotlib 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13106164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com