はじめに
MATLABのgplotmatrixはグループ別散布図行列を書くための関数で,大変便利です.
対角線上のパネルをはさんで上と下には全く同じ散布図がプロットされる仕様になっていますが,正直どちらかだけで十分です.
ということで,上半分のパネルを消す方法を,備忘録を兼ねてまとめます.
基本的には,英語版のMATLAB Answersで提案されていた方法をそのまま真似していますが,凡例の表示等を少しだけいじっています.
デフォルトの見た目
例えば,以下のような図が描けます.
example.m
load fisheriris
clr = lines(3); % 色
sym = '.'; % シンボル
sz = 10; % マーカーサイズ
doleg = 'on'; % 凡例を表示するかどうか
dispopt = 'stair'; % 対角線のパネルにヒストグラムを表示するか
xnames = ["A","B","C","D"]; % 変数名
[h,ax,bigax] = gplotmatrix(meas,[],species,clr,sym,sz,doleg,dispopt,xnames);
改良版
以下のコードで上半分のパネルを消去します.
デフォルトでは凡例は一番右上のパネルに表示されますが,凡例も一緒に消えてしまうので,消去する前に凡例を取得しておき,最後に一番右下のパネルに表示させています.
[~,n] = size(meas);
lgd = ax(1,n).Legend.String; % 右上のパネルから凡例を取得する
% 上半分のパネルを消す
for plot_row = 1:n
for plot_col = plot_row:n
delete(ax(plot_row,plot_col));
end
end
% 左下のパネルに凡例をつける
legend(ax(n,1),lgd)
あらかじめdispopt
をnone
に設定し,対角線上のパネルのヒストグラムを非表示にしておくとより見た目がすっきりします.
dispopt = 'none'; % 対角線のパネルにヒストグラムを表示するか
欲を言えば凡例を右上の余ったスペースに表示させたかったですが,今回はこれでよしとします.