gpt4 book ai didi

python - 如何更新 matplotlib 中的绘图

转载 作者:IT老高 更新时间:2023-10-28 12:34:39 26 4
gpt4 key购买 nike

我在这里重绘图形时遇到问题。我允许用户指定时间尺度(x 轴)中的单位,然后我重新计算并调用此函数 plots()。我希望情节简单地更新,而不是在图中附加另一个情节。

def plots():
global vlgaBuffSorted
cntr()

result = collections.defaultdict(list)
for d in vlgaBuffSorted:
result[d['event']].append(d)

result_list = result.values()

f = Figure()
graph1 = f.add_subplot(211)
graph2 = f.add_subplot(212,sharex=graph1)

for item in result_list:
tL = []
vgsL = []
vdsL = []
isubL = []
for dict in item:
tL.append(dict['time'])
vgsL.append(dict['vgs'])
vdsL.append(dict['vds'])
isubL.append(dict['isub'])
graph1.plot(tL,vdsL,'bo',label='a')
graph1.plot(tL,vgsL,'rp',label='b')
graph2.plot(tL,isubL,'b-',label='c')

plotCanvas = FigureCanvasTkAgg(f, pltFrame)
toolbar = NavigationToolbar2TkAgg(plotCanvas, pltFrame)
toolbar.pack(side=BOTTOM)
plotCanvas.get_tk_widget().pack(side=TOP)

最佳答案

你基本上有两个选择:

  1. 完全按照您当前的操作进行操作,但在重新绘制数据之前调用 graph1.clear()graph2.clear()。这是最慢,但最简单和最强大的选项。

  2. 您可以只更新绘图对象的数据,而不是重新绘制。您需要对代码进行一些更改,但这应该比每次都重新绘制要快得多。但是,您绘制的数据的形状不会改变,如果数据范围发生变化,您需要手动重置 x 和 y 轴限制。

举第二个选项的例子:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 6*np.pi, 100)
y = np.sin(x)

# You probably won't need this if you're embedding things in a tkinter plot...
plt.ion()

fig = plt.figure()
ax = fig.add_subplot(111)
line1, = ax.plot(x, y, 'r-') # Returns a tuple of line objects, thus the comma

for phase in np.linspace(0, 10*np.pi, 500):
line1.set_ydata(np.sin(x + phase))
fig.canvas.draw()
fig.canvas.flush_events()

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

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