How to plot multiple (x,y) series on the same axes with Chaco?

chaco, enthought

Solution

The problem with my Chaco-based code above was that I was using an OverlayPlotContainer (`container`). Because of this, each plot (from `create_line_plot`) was being drawn with its own axes rather than each plot being drawn on the same set of axes. The following works:

    pd = ArrayPlotData()
    plot = Plot(pd)
    for ii, track in enumerate(tracks):
        x = np.array(track['xw'])
        y = np.array(track['yw'])
        x_key = 'x'+str(ii)
        y_key = 'y'+str(ii)
        pd.set_data(x_key, x)
        pd.set_data(y_key, y)
        plot.plot((x_key, y_key), color='blue', origin='top left')

Problem

I have several sets of (x,y) data that I'd like to plot as line plots on the same figure. I have no trouble with matplotlib doing this, but I cannot get the same results with Chaco. Code and output are shown below. My matplotlib-based code looks like this: ``` for track in tracks: xw = np.array(track['xw']) yw = np.array(track['yw']) plt.plot(xw, yw, 'b-') if not plt.gca().yaxis_inverted(): plt.gca().invert_yaxis() ``` My Chaco-based code looks like this: ``` for track in tracks: x = np.array(track['xw']) y = np.array(track['yw']) plot = create_line_plot((x,y), color='blue', width=1.0) plot.origin = 'top left' container.add(plot) if track == tracks[0]: add_default_grids(plot) add_default_axes(plot) ``` My matplotlib-based output looks like this: My chaco-based output looks like this:

Original source