两个地块的 Matlab 图例仅适用于第二个地块

Matlab legend for two plots only applies to second plot

我需要绘制两个向量的数据,并希望每个向量的数据点以图例中解释的不同颜色显示。但是,下面的代码仅显示第二个的图例。我做错了什么?

for i_plot = 1 : plot_step : N
    subplot(N, 1, i_plot)
    h_A = plot(bookmarksA(i_plot, :),0,'b.','MarkerSize',24);
    legend('a');
    xlim ([0 pieceDuration])
    set(gca, 'yTick', []);
    title(subj_string(i_plot,:))
    hold on
    h_Z = plot(bookmarksZ(i_plot, :),0,'r.','MarkerSize',24);
    legend(h_Z, 'z');
end

您一次只能将一个标签/句柄组合传递给 legend 命令。对于给定的轴,每次调用 legend 都会覆盖之前对 legend 的调用,删除之前的图例而不是添加到现有图例中。您需要调用 legend 一次 并使用 both 个绘图句柄和标签。

legend([h_A, h_Z], {'a', 'z'})

更新

由于在您的情况下 h_Ah_Z 是具有相同外观的绘图句柄数组,您可以将 h_Ah_Z 中的第一项传递给 legend.

legend([h_A(1), h_Z(1)], {'a', 'z'})