MATLAB - 添加图例到坐标轴



在 MATLAB 中,图例是对绘图中存在的数据序列或元素的图形表示。它通过为每个元素提供标签来帮助用户理解绘图中使用的不同颜色、线型或标记的含义。当绘图包含多个数据序列或需要区分不同类型的数据时,图例特别有用。

通过向绘图添加图例,用户可以轻松识别哪个数据序列对应于哪组值,从而使绘图更具信息量且更容易解释。可以根据位置、方向、字体大小和其他属性自定义图例,以增强绘图的清晰度和美观性。

legend 函数用于在 MATLAB 中创建图例。

语法

legend
legend(label1,...,labelN)
legend(labels)
legend(subset,___)
legend(target,___)

语法解释

legend − MATLAB 中的图例就像理解绘图的关键一样。它显示了绘图中每条线、颜色或符号代表的内容。当您在 MATLAB 中绘制数据时,您可以为每组数据命名,图例将使用这些名称为绘图添加标签。如果您没有命名,MATLAB 将将数据标记为“data1”、“data2”等。

图例很智能,会在您向绘图中添加或删除数据时自动更新自身。如果还没有绘图,则图例将为空。如果没有坐标轴,MATLAB 将为图例创建一个坐标轴。

legend(label1,...,labelN) − MATLAB 中的函数用于向绘图添加标签,以解释绘图的每个部分代表什么。您可以像这样使用它:legend('Label1', 'Label2', 'Label3') 用 'Label1'、'Label2' 和 'Label3' 为绘图的不同部分添加标签。

legend(labels) − MATLAB 中的函数用于向绘图添加标签,以解释绘图的每个部分代表什么。您可以像这样使用它:legend({'Label1', 'Label2', 'Label3'}) 用 'Label1'、'Label2' 和 'Label3' 为绘图的不同部分添加标签。

legend(subset,___) − MATLAB 中的函数可用于仅在图例中显示绘图中的特定项目。您可以通过提供表示要包含的项目的图形对象的向量来执行此操作。这意味着您可以选择绘图中哪些部分在图例中进行解释,只显示您选择的元素。

legend(target,___) − MATLAB 中的函数可用于为特定坐标轴或可视化创建图例,而不是当前活动的图例。您可以通过将目标坐标轴或可视化指定为 legend 函数的第一个输入参数来执行此操作。这允许您将图例放置在任何您想要的位置,而不管当前绘图如何。

示例 1:在示例中使用图例

我们拥有的代码是。

% Create an array of values from 0 to pi
x = linspace(0, pi);

% Calculate y1 = cos(x) and plot it with a label 'cos(x)'
y1 = cos(x);
plot(x, y1, 'DisplayName', 'cos(x)')

% Hold the current plot to add another plot
hold on

% Calculate y2 = cos(2x) and plot it with a label 'cos(2x)'
y2 = cos(2*x);
plot(x, y2, 'DisplayName', 'cos(2x)')

% Release the hold to prevent further plots from being added to the current figure
hold off

% Display the legend with labels for each plot
legend

在上面的示例中 −

  • 我们使用 linspace 函数创建一个从 0 到 π 的 x 数组。我们计算 y1,它是 x 中每个值的余弦,表示 cos(x)。
  • 我们使用蓝线绘制 y1,并使用绘图函数中的“DisplayName”参数将其标记为“cos(x)”。我们使用 hold on 保持当前绘图处于活动状态,以便我们可以添加另一个绘图。
  • 我们计算 y2,它是 2*x 的余弦,表示 cos(2x)。我们使用红色虚线绘制 y2 并将其标记为“cos(2x)”。
  • 我们使用 hold off 释放保持状态,防止将更多绘图添加到当前图形。
  • 最后,我们使用 legend 函数显示图例,该函数自动使用绘图函数中设置的显示名称 (“DisplayName”) 为每个绘图添加标签。

我们的输出是 −

示例 2:使用 legend(label1,...,labelN) 语法

我们拥有的代码是

x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);

plot(x, y1, 'b-', x, y2, 'r--');
legend('sin(x)', 'cos(x)');

在此示例中,我们绘制 sin(x) 和 cos(x),然后使用 legend 函数向绘图添加图例。legend 函数采用字符串作为参数,这些字符串用作相应数据序列的标签。

执行后,我们的输出是 −

示例 3:使用语法 legend(labels)

我们拥有的代码是 −

x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);

plot(x, y1, x, y2);
legend({'sin(x)', 'cos(x)'});

在上面的示例中 −

  • 我们创建一个步长为 0.1 的从 0 到 2π 的向量 x。
  • 我们分别计算 x 的正弦值和余弦值,并将它们存储在 y1 和 y2 中。
  • 我们针对 x 绘制 y1 和 y2。
  • legend 函数使用元胞数组 {'sin(x)', 'cos(x)'} 作为其参数。元胞数组中的每个字符串都代表相应数据序列的标签。此语法允许我们使用 'sin(x)' 和 'cos(x)' 为绘图的不同部分添加标签。

执行后,我们的输出是 −

示例 4:使用语法 legend(subset,___)

我们拥有的代码如下 −

x = linspace(0, pi);

y1 = cos(x);
p1 = plot(x, y1);

hold on

y2 = cos(2*x);
plot(x, y2);

y3 = cos(3*x);
p3 = plot(x, y3);

% Release the hold to prevent further plots from being added to the current figure
hold off

% Display the legend with labels for the first and third plots
legend([p1, p3], {'First', 'Third'})

在上面的示例中 −

  • 我们使用 linspace 函数创建一个从 0 到 π 的数组 x。
  • 我们计算 y1,它是 x 中每个值的余弦,表示 cos(x),并绘制它,将绘图句柄保存为 p1。
  • 我们使用 hold on 保持当前绘图处于活动状态,以便我们可以添加更多绘图。
  • 我们计算 y2,它是 2*x 的余弦,表示 cos(2x),并绘制它(但不保存绘图句柄)。
  • 我们计算 y3,它是 3*x 的余弦,表示 cos(3x),并绘制它,将绘图句柄保存为 p3。
  • 我们使用 hold off 释放保持状态,防止将更多绘图添加到当前图形。
  • 最后,我们使用 legend 函数显示图例,指定绘图句柄 [p1, p3] 以仅在图例中包含第一个和第三个绘图,并为它们提供标签“First”和“Third”。

输出为 −

示例 5:使用语法 legend(target,___)

我们拥有的代码是 −

figure;
ax = gca;

x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
plot(ax, x, y1, x, y2);

title(ax, 'Trigonometric Functions');
xlabel(ax, 'x');
ylabel(ax, 'y');

legend(ax, {'sin(x)', 'cos(x)'}, 'Location', 'best');

在上面的示例中 −

  • 我们创建一个新图形,并使用 gca 获取当前坐标轴 (ax)。
  • 我们在指定的坐标轴 ax 上绘制正弦和余弦函数。
  • 我们设置坐标轴的标题和标签,为绘图提供上下文。
  • legend 函数使用指定的坐标轴 ax 作为第一个参数。这告诉 MATLAB 为指定的坐标轴创建图例,而不是当前坐标轴。
  • 图例使用标签“sin(x)”和“cos(x)”分别对应相应的曲线,并使用参数'Location', 'best' 将图例放置在坐标轴上最佳位置。 使用legend(target,___) 语法允许您为特定坐标轴创建图例,这在您有多个绘图或图形并希望控制图例显示位置时非常有用。

输出为 −

广告