あなたの問題は、おそらくあなたのコードで変数名としてlegend
を使用した(TroyHaskinとコメントされている)可能性があります。 legend(l);
の行のすぐ上にclear legend
を置くようにしてください。これは、MATLABがインデックスにセルl
を変換する方法を見つけ出すことはできません
l = {'a', 'b', 'c', 'd'};
A = 1;
A(l)
Error: Function 'subsindex' is not defined for values of class 'cell'.
この短い例で説明することができます。
legend
コマンドは、異なるラベルを持つ入力として両方comma separeted listとcell
と連携。
しかし、セルを使用すると、通常、警告を発行せずにname-value pair input argumentsを追加できるようになります。
警告:余分な凡例を無視します。あなたは、単に
legend(l) % Cell input
legend(l{:}) % Cell elements fed separately
しかし、あなたはまた、最初の可能性が使用して両方を使用することができ
例えば
、(legend
が上書きisn'tものとする)ラベルl
のリストと
l = {'a', 'b', 'c', 'd'};
例えば、
legend(l, 'FontSize', 8)
l
のラベルはグループ化されており、'FontSize'
はラベルではありません。
あなたは
legend(l{:}, 'FontSize', 8);
を使用している場合は、「のFontSize」のもあることを想定しているため、プロットの行数は(4)伝説の入力(の数と一致しないという警告が表示されますラベル)
したがって、あなたのl
リストが短すぎてカンマ区切りのリストとして指定すると、問題が発生します。その後、FontSizeがあなたの凡例に含まれています。下の画像を参照してください。
data = rand(8, 5); % <-- Added one extra line
l = {'a', 'b', 'c', 'd'};
graph = bar(data);
legend(l{:}, 'FontSize', 8);
![Example with bad legend labels](https://i.stack.imgur.com/7Jghw.png)
注のFontSizeはあなたが使用できる別の名前と値のペアの引数の一例です。
変数 'legend'を持つときにエラーが発生し、その関数を使用しようとします。変数の名前を変更してください。 – TroyHaskin