在 MATLAB 和图例中绘图
Plotting in MATLAB and legend
首先,我试图弄清楚一个更复杂的情况,但这是我能提供的最简单的例子。假设我想用一个普通的图形显示 3 个函数的图形 sinx, sin(2x), sin(3x)
,包括它们的图例。
我可以用普通图形画图,但我有问题legend.
我提供我的算法给你(抱歉不是一个优化的算法,但我不太会写算法)。
x = 0:0.01:2*pi;
for i = 1:3
g = plot(sin(i*x));
legend(sprintf('sin(%f *x)', i))
hold on
end
hold off
g
如果你能帮我修正我的算法就太好了。
您可以将 DisplayName
传递给 plot
函数
x = 0:0.01:2*pi;
for i = 1:3
g = plot(sin(i*x),'DisplayName',sprintf('sin(%.0f *x)', i));
hold on
end
hold off
legend('Show','Location','NorthEast')
你想要的可以不用循环完成:
- 使用
bsxfun
计算每个i
乘以向量x
的乘积,然后计算其sin
。这给你一个矩阵,s
。构建矩阵,使每个 i
都是不同的 列 .
- 只需发布
plot(s)
。当您将矩阵传递给 plot
时,将生成每个 列 的图形。
- 构建一个包含字符串的元胞数组(您可以使用
arrayfun
for that) and use that as the input argument to legend
.
代码:
x = 0:0.01:2*pi;
ii = 1:3;
s = sin(bsxfun(@times, ii, x.'));
plot(s)
str = arrayfun(@(k) ['sin(' num2str(k) '*x)'], ii, 'uniformoutput', false);
legend(str)
结果:
首先,我试图弄清楚一个更复杂的情况,但这是我能提供的最简单的例子。假设我想用一个普通的图形显示 3 个函数的图形 sinx, sin(2x), sin(3x)
,包括它们的图例。
我可以用普通图形画图,但我有问题legend.
我提供我的算法给你(抱歉不是一个优化的算法,但我不太会写算法)。
x = 0:0.01:2*pi;
for i = 1:3
g = plot(sin(i*x));
legend(sprintf('sin(%f *x)', i))
hold on
end
hold off
g
如果你能帮我修正我的算法就太好了。
您可以将 DisplayName
传递给 plot
函数
x = 0:0.01:2*pi;
for i = 1:3
g = plot(sin(i*x),'DisplayName',sprintf('sin(%.0f *x)', i));
hold on
end
hold off
legend('Show','Location','NorthEast')
你想要的可以不用循环完成:
- 使用
bsxfun
计算每个i
乘以向量x
的乘积,然后计算其sin
。这给你一个矩阵,s
。构建矩阵,使每个i
都是不同的 列 . - 只需发布
plot(s)
。当您将矩阵传递给plot
时,将生成每个 列 的图形。 - 构建一个包含字符串的元胞数组(您可以使用
arrayfun
for that) and use that as the input argument tolegend
.
代码:
x = 0:0.01:2*pi;
ii = 1:3;
s = sin(bsxfun(@times, ii, x.'));
plot(s)
str = arrayfun(@(k) ['sin(' num2str(k) '*x)'], ii, 'uniformoutput', false);
legend(str)
结果: