我在这里重新绘制数字时遇到问题.我允许用户在时间刻度(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)
Run Code Online (Sandbox Code Playgroud) 我需要使用matplotlib自动获取适合数据的图.这是我给出的代码:
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
....
lines = LineCollection(mpl.line_holder, colors=mpl.colorholder , linestyle='solid')
plt.axes().add_collection(lines)
plt.axes().set_aspect('equal', 'datalim')
plt.draw()
plt.show()
Run Code Online (Sandbox Code Playgroud)
这会创建一个绘图,但无论数据是什么,窗口总是相同的(0-~.8),即使所有数据都在该窗口之外.生成的窗口无法缩小,只有在,因此这是一个主要问题.我找不到任何设置任何类型的大小,也无法找到有关默认值的详细信息.我需要窗口自动适应数据,但我找不到任何功能(由于某种原因,autoscale_on(True)不会这样做).数据变化很大,因此设置硬限制不是一种选择.如何才能正确显示?
我有一个图表,上面有多个数据集。随着数据的更新,我需要不断地重新绘制这些线,每条线都分开。如何重复删除和重新建立它,最好不必每次都删除整个图形并重绘其上的所有线条?