Matlab 绘图图例自动化
Matlab plot legend automation
我正在求解一个依赖于 x 和 t 的 pde,并希望针对 t 的几个值显示所有 x 的解。我正在尝试编写将自动为该图生成图例的代码。例如,如果我在 t = 0、1、5 和 9 处绘制解,我希望图例显示 "t=0"、"t=1" 等。
假设我的解保存在矩阵 u 中。我的时间保存在向量 t 中。我采样的时间索引将在矢量 tsampled 中。请注意,这与我在情节中想要的时间不同。如果我在向量 t 的索引 6 处取时间,则此值不是 6,但可以是任何值。
我目前正在尝试通过以下方式执行此操作:
tlen = max(size(t));
tsampled = [2, floor(tlen/5), floor(2*tlen/5), floor(3*tlen/5), floor(4*tlen/5), floor(tlen)];
t(tsampled)
legnd = {'', '', '', '', '', ''};
hold on
for i = 1:1:size(tsampled)
plot(x,u(tsampled(i),:))
legnd(i) = sprintf('t = %0.2f s \n', t(tsampled(i)));
end
title('my PDE solution');
legend(legnd, 0);
xlabel('x')
ylabel('u')
hold off
但这会产生错误 "Conversion to cell from char is not possible."
当我改为尝试使用以下行时:
legend (sprintf('t = %0.2f s \n', t(tsampled)))
我在图表上得到了正确的 "strings",但它们的格式如下:
我希望在蓝线旁边显示 "t=10.20 s",在橙色线旁边显示 "t = 91.84 s",等等。如何获得我想要的结果?
因为您将 legnd
预定义为元胞数组,所以您需要使用 {}
而不是 ()
来获取正确的索引。尝试:
legnd{i} = sprintf('t = %0.2f s \n', t(tsampled(i)));
我正在求解一个依赖于 x 和 t 的 pde,并希望针对 t 的几个值显示所有 x 的解。我正在尝试编写将自动为该图生成图例的代码。例如,如果我在 t = 0、1、5 和 9 处绘制解,我希望图例显示 "t=0"、"t=1" 等。
假设我的解保存在矩阵 u 中。我的时间保存在向量 t 中。我采样的时间索引将在矢量 tsampled 中。请注意,这与我在情节中想要的时间不同。如果我在向量 t 的索引 6 处取时间,则此值不是 6,但可以是任何值。
我目前正在尝试通过以下方式执行此操作:
tlen = max(size(t));
tsampled = [2, floor(tlen/5), floor(2*tlen/5), floor(3*tlen/5), floor(4*tlen/5), floor(tlen)];
t(tsampled)
legnd = {'', '', '', '', '', ''};
hold on
for i = 1:1:size(tsampled)
plot(x,u(tsampled(i),:))
legnd(i) = sprintf('t = %0.2f s \n', t(tsampled(i)));
end
title('my PDE solution');
legend(legnd, 0);
xlabel('x')
ylabel('u')
hold off
但这会产生错误 "Conversion to cell from char is not possible."
当我改为尝试使用以下行时:
legend (sprintf('t = %0.2f s \n', t(tsampled)))
我在图表上得到了正确的 "strings",但它们的格式如下:
我希望在蓝线旁边显示 "t=10.20 s",在橙色线旁边显示 "t = 91.84 s",等等。如何获得我想要的结果?
因为您将 legnd
预定义为元胞数组,所以您需要使用 {}
而不是 ()
来获取正确的索引。尝试:
legnd{i} = sprintf('t = %0.2f s \n', t(tsampled(i)));