[英]add legend matlab plot
我有一個matlab函數myfunction(var1,var2)
,它給了我一個帶有圖例的圖。 我想在一張圖中使用此函數生成更多圖。 到目前為止,這是有效的,即在一張圖中的2個圖具有:
myfunction(a,b)
hold on
myfunction(c,d)
hold off
這里的問題是為每個圖生成的圖例具有:
legend(sprintf('%s%s',var1,' on ',var2))
legend('boxoff')
僅在myfunction
的最后一個實例中myfunction
(在本例中為myfunction(c,d)
,在圖例中只有一行顯示“ c on d”,但我想在兩行中使用“ a on” b'和'c on d')
那么如何在不覆蓋圖例的情況下添加圖例呢?
如果要執行很多操作,最好將圖例標簽導出為函數的輸出參數,然后將它們連接起來並在函數外部調用legend
。
如果這只是hack,那么在函數內部,您可以查看軸手柄並拉出圖例條目。 有一個類似的問題在這里是這樣做的。
另一種可能性是使用MATLAB的動態圖例 (未充分記錄)功能。 在您的情況下,您無需將圖例標題傳遞給legend
函數,而需要將它們用作plot
函數的輸入參數:
plot(x, y, 'DisplayName', 'caption');
然后使用以下語法添加圖例:
lh = legend('-DynamicLegend');
set(lh, 'Box', 'off');
但是,如果您有大量圖形要盡可能快地(例如在循環中)在同一圖上呈現,我不會建議這種方法。 在這些情況下,動態圖例可能會嚴重影響性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.