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

标签 matlab matlab-figure

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

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

enter image description here

最佳答案

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

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

更新

由于在您的情况下 h_Ah_Z 是具有相同外观的绘图句柄数组,因此您只需传递 h_A 中的第一项即可h_Z图例

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

关于两个图的 Matlab 图例仅适用于第二个图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998465/

相关文章:

c++ - Simulink - 使用 .Mat 作为自动编码的 c 函数的外部输入变量

c++ - Matlab矩阵逆函数在C++中的Eigen实现

matlab - 从 MATLAB 中的 ezplot 提取数据

matlab - 颜色图是如何工作的

python - 如何使用 python 的列表推导式来执行以下 matlab 代码?

matlab - 改进从 m 文件运行 Simulink 模型

matlab - matlab的latex解释器如何处理unicode?

matlab - 匹配轴刻度

Matlab : Plot each line of a matrix as a function of its index

matlab - 转换数据以适应正态分布