凡例の線を短くする函数

MATLABで作った図ってときどき, 凡例のラインが長すぎる. これを短くするための函数.

使い方


例えば, 以下の図に,

example
legend('Sound', 'Vibration', 'Box', 'off')として凡例を入れると
example
ちょっと長い・・・

そこで, この関数shortenLegendLineを使う. 凡例を入れる際に,

MATLAB
[l, p] = legend('Sound', 'Vibration', 'Box', 'off'); % このような戻り値でlegendをいれる. 

% ラインの長さを1/n倍にしたいとして, pとnを引数にする. 
shortenLegendLine(p, 2)
example
短くなった.

コード


たいして複雑な函数ではない. legendを入れる際に[l, p]を戻り値にするのがコツ. この函数ではBoxまで短くはならんけど, まあ, かんたんにそれもできるだろう.

MATLAB
function [] = shortenLegendLine(p, nDivide)
% SHORTENLEGENDLINE makes legend line short by nDivide times.
% You can get p as follows:
% [l, p] = legend('a', 'b', ...)

    nClass = length(p);
    
    for iClass = 1:nClass
        if isa(p(iClass), 'matlab.graphics.primitive.Line')
            if length(p(iClass).XData) == 2
                X = p(iClass).XData;
                X(1) = X(2) - (X(2) - X(1))/nDivide;
                p(iClass).XData(1) = X(1);
            end
        end
    end
end

この記事のTOP    BACK    TOP