我有几组 (x,y) 数据,我想将它们绘制为同一图上的线图。我对 matplotlib 执行此操作没有任何问题,但我无法使用 Chaco 获得相同的结果。代码和输出如下所示。

我的基于 matplotlib 的代码如下所示:

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()

我的基于 Chaco 的代码如下所示:
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)

我基于 matplotlib 的输出如下所示:

我基于 chaco 的输出如下所示:

最佳答案

我上面基于 Chaco 的代码的问题是我使用的是 OverlayPlotContainer ( container )。因此,每个图(来自 create_line_plot )都是用自己的轴绘制的,而不是每个图都绘制在同一组轴上。以下工作:

    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')

关于enthought - 如何使用 Chaco 在同一轴上绘制多个 (x,y) 系列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16224346/

10-13 08:52