2014-04-07 5 views
0

NumPy 어레이에 저장된 여러 시계열 데이터를 동일한 플롯에서 각 시계열 오프셋을 사용하여 플롯하려는 경우 효과적으로 자체 Y 축을 갖습니다. 이 작업을 수행하는 가장 좋은 방법은 각 시리즈를 별도의 VPlotContainer에 넣는 것일 수 있다고 생각했지만, configure_traits() 전화를 걸 때 방금 빈 창이 나타납니다. 기계류가 처리 할 시간이 너무 많다는 문제가 있습니까?Chaco에서 VPlotContainers를 사용하여 여러 시계열을 그려보세요. 사용 가능한 VPlotContainer 객체 수 제한

class EEGPlot(HasTraits): 
    plot = Instance(VPlotContainer) 

    traits_view = View(
    Item('plot',editor=ComponentEditor(), show_label=False), 
    width=1024, height=768, resizable=True, title="EEG Preview") 

    def __init__(self, eegObject): 
     super(EEGPlot, self).__init__() 

     x = xrange(eegObject.windowStart, eegObject.windowEnd) 

     plotNames = {} 
     allPlots = [] 

     for idx, column in enumerate(eegObject.data[:,:].transpose()): # only included indexes to indicate array dimensions 
      y = column 
      plotdata = ArrayPlotData(x=x, y=y) 
      myplot = Plot(plotdata) 
      myplot.plot(("x", "y"), type="line", color="blue") 
      plotNames["plot{0}".format(idx)] = myplot 
      allPlots.append(plotNames["plot{0}".format(idx)]) 

     container = VPlotContainer(*allPlots) 
     container.spacing = 0 

     self.plot = container 

그래서 내 EEGObject는 2 차원의 NumPy 배열입니다. 약 1500 (행) ~ 65 (열). 내가 뭔가 잘못하고 있거나 너무 많은 컨테이너를주고 있기 때문에 빈 화면이 나타나는지 궁금합니다.

답변

0

대답은 내가 필요한 것을 시도하고 달성하기 위해 잘못된 도구를 사용하고있는 것처럼 보입니다. VPlotContainer는 메인 디스플레이 컨테이너 내에서 구별되는 플롯 (다른 데이터 소스에서도 가능)을 구분합니다.

원래 배열에 5 개의 열만있는 코드에 테스트 배열을 입력하면 각 열은 별도의 컨테이너에 그려 지지만 열을 6 이상으로 늘리면 UI 창이 비어있게됩니다.

그렇습니다. 사용 가능한 VPlotContainers의 수에 한계가있는 것처럼 보입니다. 그러나이 제한이 주 UI 전용 공간에 의해 제한되는지 여부는 알 수 없습니다. 창문이나 뭐.

VPlotContainers를 사용하면 여러 개의 시계열 데이터를 표시하는 적절한 기술이 아닙니다. 라인이 분리되도록하려면 올바른 오브젝트가 MultiLinePlot이거나 OverlayPlotContainer가됩니다.

http://docs.enthought.com/chaco/user_manual/plot_types.html#multi-line-plot

또한 MultiLinePlot를 사용하여 문제가 있어요,하지만 여기에 별도의 스레드에이 질문을 이사 :

Chaco MultiLinePlot - unable to get simple plot to display, wondering if package broken?