我有一系列使用计时器对象动态更新的chaco图。我希望在数据发生变化时设置Y(“值” in chaco speak)限制。
当我初始化绘图对象时,我调用
obj.alldata = ArrayPlotData(frequency=frequencies)
# Cycle through the channels and add a set to the alldata object
for [i,v] in enumerate(channels):
setname="amplitude{:d}".format(v)
obj.alldata.set_data(setname, empty_amplitude)
for c in config['plots']:
thisplot=Plot(obj.alldata)
xlim=thisplot.index_mapper.range
xlim.low=1
xlim.high=1000
ylim=thisplot.value_mapper.range
ylim.low=0.001
ylim.high=1000
thisplot.plot(("frequency", initdata),
name="Spec",
value_scale="log",
index_scale="log")
container.add(thisplot)
然后,我稍后用以下内容更新数据数组:
def onTimer(self, *args):
'''This is fired every time the timer is triggered
'''
# Get the data
for [i,v] in enumerate(self.channels):
data=getsimdata(self.s,v,int(self.config['numsamp']))
self.alldata.set_data(setname,data)
这一切都很好,除了我想自动调整数据添加后的情节。我看过各种网页提示DataRange2D
和value_mapper
,但我不知道如何使用它们。任何帮助将不胜感激。
答案 0 :(得分:1)
自动测距:
thisPlot.range2d.y_range.high ='auto'
具体范围:
thisPlot.range2d.y_range.high = 1000
thisPlot.range2d.y_range.low = .001
您可以通过创建Bool特征“enableAutoRange”在两者之间切换。在特征变化时,您可以如上所述设置绘图值。