[英]Matlab bar plot legend
我嘗試將一些數據繪制到條形圖中並添加圖例。 Matlab為條形分配四種顏色,我將為這些顏色添加圖例。
我的代碼是:
data = rand(8, 4);
l = {'a', 'b', 'c', 'd'};
graph = bar(data);
legend( l );
Matlab可以繪制圖形,但不能添加圖例。 錯誤消息是:
"Error using subsindex
Function 'subsindex' is not defined for values of class 'cell'.
Error in plotDisAndStep
legend( l );"
您的問題很可能(如TroyHaskin所評論)是您在代碼的前面使用了legend
作為變量名。 嘗試在帶有legend( l );
的行的正上方放置一個clear legend
legend( l );
。 這個簡短的例子可以說明這一點
l = {'a', 'b', 'c', 'd'};
A = 1;
A(l)
Error: Function 'subsindex' is not defined for values of class 'cell'.
Matlab無法弄清楚如何將單元格l
轉換為索引。
該legend
命令作品既 逗號separeted列表和cell
與不同的標簽輸入。
但是,使用單元通常會更好,因為in啟用了附加的名稱/值對輸入參數而不發出警告。
警告:忽略多余的圖例條目。
例如,您的標簽列表為l
(前提是legend
未被覆蓋)
l = {'a', 'b', 'c', 'd'};
您可以簡單地同時使用
legend(l) % Cell input
legend(l{:}) % Cell elements fed separately
但是使用第一個,您也可以添加,例如
legend(l, 'FontSize', 8)
然后,Matlab理解l
中的標簽被分組在一起並且'FontSize'
不是標簽。
如果您使用
legend(l{:}, 'FontSize', 8);
您將收到一條警告,指出情節(4)中的行數與圖例輸入的數目不匹配(因為“ FontSize”也被視為標簽)
因此,如果您的l
列表太短並且以逗號分隔的列表形式提供,也會給您帶來麻煩。 然后, FontSize將包含在您的圖例中,請參見下圖。
data = rand(8, 5); % <-- Added one extra line
l = {'a', 'b', 'c', 'd'};
graph = bar(data);
legend( l{:}, 'FontSize', 8);
請注意, FontSize僅是您可以使用的不同“名稱/值”對參數的示例。
您有一個用逗號分隔的列表 ,因此您需要使用以下內容。
legend(l{:});
您面臨的問題可能是由於您使用的Matlab版本。 否則,您的代碼也應運行。 例如,您的代碼在我的Matlab版本(2016)中運行良好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.