[英]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
但這會產生錯誤“無法從char轉換為單元格”。
當我改為嘗試使用該行時:
legend (sprintf('t = %0.2f s \n', t(tsampled)))
我在圖表上得到正確的“字符串”,但是它們的格式如下:
我希望在藍線旁邊顯示“ t = 10.20 s”,在橙線旁邊顯示“ t = 91.84 s”,依此類推。 我如何獲得想要的結果?
由於您將legnd
預定義為單元格數組,因此需要使用{}
而不是()
來獲取正確的索引。 嘗試:
legnd{i} = sprintf('t = %0.2f s \n', t(tsampled(i)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.