1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【MATLAB】gplotmatrixで上半分のパネルを消す

Last updated at Posted at 2023-10-25

はじめに

MATLABのgplotmatrixはグループ別散布図行列を書くための関数で,大変便利です.

対角線上のパネルをはさんで上と下には全く同じ散布図がプロットされる仕様になっていますが,正直どちらかだけで十分です.

ということで,上半分のパネルを消す方法を,備忘録を兼ねてまとめます.

基本的には,英語版のMATLAB Answersで提案されていた方法をそのまま真似していますが,凡例の表示等を少しだけいじっています.

デフォルトの見た目

例えば,以下のような図が描けます.

image.png

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);

改良版

image.png

以下のコードで上半分のパネルを消去します.

デフォルトでは凡例は一番右上のパネルに表示されますが,凡例も一緒に消えてしまうので,消去する前に凡例を取得しておき,最後に一番右下のパネルに表示させています.

[~,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)

あらかじめdispoptnoneに設定し,対角線上のパネルのヒストグラムを非表示にしておくとより見た目がすっきりします.

dispopt = 'none'; % 対角線のパネルにヒストグラムを表示するか

欲を言えば凡例を右上の余ったスペースに表示させたかったですが,今回はこれでよしとします.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?