Matlab設定Legend橫排 分塊

2022-01-23 22:33:10 字數 1756 閱讀 9068

高階用法1:指定legend顯示的位置:

legend(,'location','southeast');

比較雞肋,畫好圖後樹手動拖動就好了

高階用法2:指定顯示某幾條曲線的legend:

例如你有25條曲線,想顯示其中1,6,11,16,21的legend

h = plot(data);

legend(h([1 6 11 16 21],'1,'6','11』,'16','21');

高階用法3:legend橫排

hl = legend(h([1 6 11 16 21],'1,'6','11』,'16','21');

set(hl,'orientation','horizon')

高階用法4:不顯示方框:

hl = legend(h([1 6 11 16 21],'1,'6','11』,'16','21');

set(hl,'box','off');

檢視這個的初衷是因為四條曲線的對比圖,但是有些曲線差別太大,比如a在[1.8,1.82],b在[0.9,1.1],cd曲線在中間這樣的話,因為a曲線的存在,中座標最大值是1.82但是變化很不明顯,所以該曲線在圖的最上方,而且緊挨著圖的上邊界,因為圖例在右上方,這樣肯定會覆蓋曲線,所以想著橫排。

但是這種方法也不好做好的事拆開。

matlab提供的legend函式,給出的legend經常覆蓋了某些曲線(尤其是用ieee模板的時候,一般寬度不超過315px).

a=linspace(0,2*pi,100);

y1=100*sin(a);

y2=50*cos(a);

y3=tan(a);

y4=log(a);

y=[y1;y2;y3;y4];

figure

p=plot(a,y)

legend('sin','cos','tan','log')

如下圖所示:

matlab畫圖實現兩個或多個legend,不同排版

這顯然不是你想要的,你的reviewers也會肯定讓你修改的!

原因是matlab的legend函式,只能水平或者豎直排版!

解決方法:把legend分成幾個,相對獨立,這樣可以使用滑鼠隨意移動,確保不遮擋曲線。

結果如下圖所示:

位置可以隨便寫,圖繪製好厚,手動拖動。

a=linspace(0,2*pi,100);

y1=100*sin(a);

y2=50*cos(a);

y3=tan(a);

y4=log(a);

y=[y1;y2;y3;y4];

figure

p=plot(a,y)

legend(p(1:2),'sin','cos');

ah=axes('position',get(gca,'position'),...

'visible','off');

legend(ah,p(3:4),'tan','log','location','west');

Matlab注釋函式legend詳解

用matlab畫圖時,有時候需要對各種圖示進行標註,例如,用 代表a的運動情況,代表b的運動情況。legend函式的基本用法是 legend string1,string2,string3,分別將字串1 字串2 字串3 標註到圖中,每個字串對應的圖示為畫圖時的圖示。例如 plot x,sin x b...

Matlab注釋函式legend詳解

用matlab畫圖時,有時候需要對各種圖示進行標註,例如,用 代表a的運動情況,代表b的運動情況。legend函式的基本用法是 legend string1,string2,string3,分別將字串1 字串2 字串3 標註到圖中,每個字串對應的圖示為畫圖時的圖示。例如 plot x,sin x b...

Matlab中legend的用法總結

用matlab畫圖時,有時候需要對各種圖示進行標註,例如,用 代表a的運動情況,代表b的運動情況。legend string1,string2,string3,分別將字串1 字串2 字串3 標註到圖中,每個字串對應的圖示為畫圖時的圖示。例如 plot x,sin x b x,cos x r lege...