0

配列に格納された複数の時系列データをNumPy同じプロットにプロットしたいのですが、各時系列オフセットがあるため、効果的に独自の Y 軸があります。これを行う最善の方法は、各シリーズを別々VPlotContainerconfigure_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 は 2 次元の NumPy 配列です。約1500(行)×65(列)。何か間違ったことをしているために空白の画面が表示されるのか、それとも単にコンテナを多く与えすぎているのか疑問に思っています。

4

1 に答える 1

0

答えは、私が必要なものを達成しようとして間違ったツールを使用していたということのようです。VPlotContainers は、メインの表示コンテナー内で個別のプロット (異なるデータ ソースからのものである可能性が高い) を分離するためのものです。

5列しかない元の質問のコードにテスト配列を入力すると、各列が個別のコンテナーにプロットされましたが、列を6を超えて増やすと、UIウィンドウが空白に表示されました。

したがって、答えはイエスだと思います。使用できる VPlotContainers の数に制限があるように見えますが、この制限が絶対的なものなのか、メイン UI ウィンドウ専用のスペースに制限されているのかはわかりません。

いずれにせよ、VPlotContainers を使用することは、複数の時系列データを表示するための適切な手法ではありません。線を分離したい場合、正しいオブジェクトは MultiLinePlot か、OverlayPlotContainer です。

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

MultiLinePlot の使用にも問題がありますが、この質問を別のスレッドに移動しました:

Chaco MultiLinePlot - 簡単なプロットを表示できません。パッケージが壊れているのではないかと思いますか?

于 2014-04-09T14:44:07.633 に答える