我有一系列的chaco图,它们是用一个timer对象动态更新的。我想在数据改变时设置chaco speak中的Y(“值”)限制。
当我初始化plot对象时

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)

这一切工作正常,除了我想自动范围的绘图后,数据已经添加。我已经看到很多页面建议使用DataRange2Dvalue_mapper,但我不知道如何使用它们。任何帮助都将不胜感激。

最佳答案

自动测距:
thisPlot.range2d.y_range.high='自动'
对于特定范围:
thisPlot.range2d.y_range.high=1000
此plot.range2d.y_range.low=.001
您可以通过创建Bool trait“enableAutoRange”在两者之间切换。在trait更改时,您可以如上所述设置绘图值。

08-27 04:19