Построение нескольких временных рядов с использованием VPlotContainers в Chaco. Ограничьте количество объектов VPlotContainer, которые вы можете использовать

Я хочу построить несколько временных рядов данных, хранящихся в NumPy массив, в том же графике, но с каждым смещением временного ряда, поэтому он имеет собственную ось Y. Я подумал, что лучший способ сделать это может быть поместить каждую серию в отдельный VPlotContainer, но когда я звоню configure_traits() звоните, я просто получаю пустое окно. Является ли проблема в том, что у меня слишком много временных рядов для машин?

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 - это массив NumPy с двумя измерениями. Около 1500(ряд) на 65(столб). Мне интересно, получаю ли я пустой экран, потому что я делаю что-то не так, или я просто выдаю слишком много контейнеров?

1 ответ

Кажется, ответ таков: я использовал неправильные инструменты, чтобы попытаться достичь того, что мне было нужно. VPlotContainers предназначены для отделения отдельных графиков (скорее всего, даже от разных источников данных) внутри основного контейнера отображения.

Когда я вставил тестовый массив в код исходного вопроса, в котором было только 5 столбцов, то каждый столбец отображался в отдельном контейнере, но когда я увеличил столбцы до значения выше 6, окно пользовательского интерфейса выглядело пустым.

Поэтому я предполагаю, что ответ таков: да, может показаться, что существует ограничение на количество VPlotContainers, которые вы можете использовать, но я не знаю, является ли этот предел абсолютным или ограниченным пространством, выделенным для основного окна пользовательского интерфейса, или как.

В любом случае использование VPlotContainers не является подходящим методом для отображения данных нескольких временных рядов. Правильный объект будет MultiLinePlot, если вы хотите, чтобы линии были разделены, или OverlayPlotContainer.

http://docs.enthought.com/chaco/user_manual/plot_types.html

У меня также возникают проблемы с использованием MultiLinePlot, но я перенес этот вопрос в отдельную ветку здесь:

Chaco MultiLinePlot - невозможно отобразить простой график, интересно, не сломан ли пакет?

Другие вопросы по тегам