MATLAB: 凡例の長さを変えたい

MATLABプロット凡例変更日本語長さ

legendで作った凡例の長さを変更できませんか? 一点鎖線や破線が綺麗に見えません.

Best Answer

R2014b以後のバージョンを仮定しますが、legendオブジェクトのプロパティを編集することで、凡例で表示される線の長さを変更することが可能です。
例えば、下記は凡例の線を長く変更しています。
h1 = plot(1:10);
[hh,icons,plots,txt] = legend({'Line 1'});
icons(2).XData = [0.0 0.6];
下記に詳しく解説を加えます。まず、
h1 = plot(1:10);
[hh,icons,plots,txt] = legend({'Line 1'});
との実行で凡例の線に関するオブジェクトがiconsとして出力されます。参考:http://jp.mathworks.com/help/matlab/ref/legend.html#outputarg_icons
icons =
3x1 graphics 配列:
Text (Line 1)
Line (Line 1)
Line (Line 1)
3つのオブジェクトがありますが、1つ目 icons(1) は Line 1という文字列、2つ目 icons(2) は凡例の線の両端で定義される Lineオブジェクト、3つ目 icons(3) は凡例の線の中心をデータに持つ"点" です。実際にプロパティを見てみるとわかりやすいと思います。
>> icons(2)
ans =
Line (Line 1) のプロパティ:
Color: [0 0.4470 0.7410]
LineStyle: '-'
LineWidth: 0.5000
Marker: 'none'
MarkerSize: 6
MarkerFaceColor: 'none'
XData: [0.0571 0.4857]
YData: [0.5000 0.5000]
ZData: [1x0 double]
すべてのプロパティ を表示
>> icons(3)
ans =
Line (Line 1) のプロパティ:
Color: [0 0.4470 0.7410]
LineStyle: 'none'
LineWidth: 0.5000
Marker: 'none'
MarkerSize: 6
MarkerFaceColor: 'none'
XData: 0.2714
YData: 0.5000
ZData: [1x0 double]
すべてのプロパティ を表示
ここで例えば icons(3) のプロパティの内、Marker = 'o' などとすると、凡例の線の中心に丸のマーカーが登場します。
icons(3).Marker = 'o';
凡例の示すものが線ではなく点で表される場合に活用されます。
ここまでで、凡例の線の長さに関しては icons(2)のプロパティを変更することで実現できそうなことがわかります。具体的には線の位置(特にx座標)を定義する XData を変更します。
現時点で XData: [0.0571 0.4857] の値が入っていることが上の表示で確認できますので、短くする場合には例えば
icons(2).XData = [0.1 0.3];
長くする場合には
icons(2).XData = [0.0 0.6];
などと、始点・終点位置を指定して長さを変更することができます。