「SAS Plotter」はモダンなグラフを簡単に作成できるグラフマクロパッケージです。
このページではSAS Plotter(ver 1.2) でRidgeline plotを作成する方法を解説します。
2023/11/1 ver1.1に更新
2024/2/1 ver1.2に更新
四分位数別の塗分けに対応し、いくつかのパラメータを削除、追加しました。
https://picolabs.jp/sasplotter_usage
Ridgeline plotとは
Ridgeline plotまたはjoy plotは応答変数の分布をグループごとにプロットする作図手法です。
分布はカーネル密度推定で推定した密度をプロットすることで表現します。
またrugplotを併用することで個別データの可視化も可能です。
Rではggplot2を使った作図例が多数紹介されています。
Ridgelineマクロの使用方法
SAS Plotterでは%Ridgelineマクロを使用することで作成できます。
さらに各種記述統計量の表示も可能です。
Input data
key | 変数 | 変数タイプ |
---|---|---|
1 | カテゴリ変数 | 数値または文字列 |
2 | 群変数 | 数値または文字列 |
応答変数 | 数値 |
群変数は任意です。群変数とカテゴリ変数は文字列型でも動作しますが、その場合はテキストの昇順でグループの表示順を決定します。
順番を定義したい場合はフォーマットを適用した数値変数を使用することを推奨します。
文法
ods graphics / < graphics option > ;
ods listing gpath=< output path >;
%macro ridgeline(
data=,
x=,
y=,
group=None,
xlabel=x,
ylabel=y,
yticks=,
cat_iv = 1.2,
gridsize = 401,
bw_method = sjpi,
bw_adjust = 1,
quartile=False,
mean=False,
legend = False,
grouplegendtitle=group,
rug = False,
ruglength = 2,
fillstyle=None,
qgradient=1,
palette=sns);
パラメータ
data : (必須)
入力データ。rename, whereオプションを併用できます。
x : (必須)
カテゴリ変数
y : (必須)
応答変数
group : (任意)
群変数。xオプションと同じ変数を指定すると、各グループはそれぞれ別の色で塗り分けられます。指定しない場合はすべてのオブジェクトは同じ色になります。デフォルト=None
xlabel : (任意)
カテゴリ軸のラベル。デフォルトは「x」。以下のように設定するとラベルは非表示となります。xlabel=,
ylabel : (任意)
応答変数軸のラベル。デフォルトは「y」。以下のように設定するとラベルは非表示となります。ylabel=,
yticks : (必須)
応答変数軸の目盛りを指定できます。半角スペースで区切られた数値リストを指定してください。数値は昇順で指定する必要があります。(例)yticks = 10 20 30 40,
cat_iv : (任意)
各カテゴリの間隔。デフォルトは1.2。1未満にするとグラフ同士が重なる可能性があります。
gridsize : (任意)
KDEのグリッド数。デフォルトは401(proc kdeのデフォルト値)
bw_method : (任意)
KDEのバンド幅推定方法を指定します。デフォルトはsjpi(proc kdeのデフォルト値)。利用可能な推定方法は以下の通りです。
- sjpi (Sheather-Jones plug-in)
- snr (simple normal reference)
- snrq (simple normal reference that uses the interquartile
range) - srot (Silverman’s rule of thumb)
- os (oversmoothed)
bw_adjust : (任意)
バンド幅のファクター。この値を大きくすると密度はより滑らかになります。デフォルトは1。
quartile: (任意)
Trueにすると四分位線を表示します。デフォルトはFalse。
mean: (任意)
Trueにすると平均線を表示します。デフォルトはFalse。
legend : (任意)
Trueを指定すると凡例を表示します。groupオプションを”None”を指定するとこの引数は無視されます。 デフォルトはFalse。
grouplegendtitle: (任意)
groupパラメータで指定した群の凡例タイトルを指定します。LegendパラメータがTrueではない場合は無視されます。デフォルトは”Group”。
fillstyle: (任意)
塗りつぶし設定を変更できます。以下のキーワードのいずれかを指定できます。デフォルトはNone(塗りを設定しない)。
- None: 塗りつぶしを非表示にします。
- Group: groupパラメータで指定した変数に基づいて密度プロットを塗りつぶします。
- Quartile: 密度プロットを4分位点ごとに分割して塗りつぶします。
qgradient: (任意)
Fillstyleパラメータでquartileを指定した場合、四分位のカラーグラジエントパターンを指定できます。現在は7種類のグラジエントパターンが登録されており、IDを指定することで切り替えることができます。デフォルトは1。
なお利用できるカラーグラジエントは以下の通りです。
rug : (任意)
Trueを指定するとrugplotを表示します。デフォルトはFalse。
ruglength : (任意)
rugplotの長さを制御します。値を大きくするとrugplotを伸ばします。
rugオプションをFalseに指定した場合はこのオプションは無視されます。
デフォルトは1。
palette : キーワード (オプション)
塗り、ライン、マーカーのカラーパレット、以下のパレットが利用可能です。デフォルトはSNS(seabornのデフォルトパレット)
- SAS
- SNS (Seaborn)
- STATA
- TABLEAU
作図例
シンプルなridgeline plot
以下のテストデータを用いてridgeline plotを作成してみます。
datasets (tokyo_naha_temp)
variable | type | detail |
---|---|---|
month | 数値 | Jan-Dec |
region | 数値 | 1=Tokyo 2=Naha |
max_temp | 数値 | 日中最高気温 |
ods graphics /reset=all height=15cm width=25cm imagename="ridgeline_simple" imagefmt=svg;
ods listing gpath="<output path>";
%ridgeline(
data=tokyo_naha_temp(where=(month in(1:6) and region=1)),
x=month,
y=max_temp,
xlabel=month,
ylabel=maximum temperature (℃),
yticks=0 5 10 15 20 25 30 35 40
);
グループ毎に表示
groupパラメータを指定すると塗りつぶしが利用できます。fillstyleパラメータを設定しない場合はグループに応じて線の色が変わります。塗りを適用する場合はfillstyleパラメータをgroupに変更します。
ods graphics /reset=all height=15cm width=25cm imagename="ridgeline_simple_grouped" imagefmt=svg;
ods listing gpath="<output path>";
%ridgeline(
data=tokyo_naha_temp(where=(month in(1:6))),
x=month,
y=max_temp,
group=region,
xlabel=month,
ylabel=maximum temperature (℃),
yticks=0 5 10 15 20 25 30 35 40,
grouplegendtitle=Region,
legend=true
);
記述統計量および個別値の表示
平均値と4分位点の表示をサポートしています。四分位点は点線、平均値は実線で表現されます。ラグプロットを使用すれば個別値の表示も可能です。
ods graphics /reset=all height=15cm width=25cm imagename="ridgeline_stat" imagefmt=svg;
ods listing gpath="<output path>";
%ridgeline(
data=tokyo_naha_temp(where=(month in(1:6) and region=1)),
x=month,
y=max_temp,
group=region,
xlabel=month,
ylabel=maximum temperature (℃),
yticks=0 5 10 15 20 25 30 35 40,
grouplegendtitle=Region,
legend=true,
mean=true,
quartile=true,
rug=true
);
塗りスタイル
密度プロットの塗りスタイルは非表示、グループ、4分位の三つをサポートしています。
グループと4分位はgroupパラメータを設定した場合のみ使用可能です。
ods graphics /reset=all height=15cm width=20cm imagename="ridgeline_fill_group" imagefmt=svg;
ods listing gpath="<output path>";
%ridgeline(
data=tokyo_naha_temp(where=(month in(1:6))),
x=month,
y=max_temp,
group=region,
xlabel=month,
ylabel=maximum temperature (℃),
yticks=0 5 10 15 20 25 30 35 40,
grouplegendtitle=Region,
fillstyle=group,
legend=true,
mean=false,
quartile=true,
rug=true
ods graphics /reset=all height=15cm width=20cm imagename="ridgeline_fill_quartile" imagefmt=svg;
ods listing gpath="<output path>";
%ridgeline(
data=tokyo_naha_temp(where=(month in(1:6) and region=1)),
x=month,
y=max_temp,
group=region,
xlabel=month,
ylabel=maximum temperature (℃),
yticks=0 5 10 15 20 25 30 35 40,
grouplegendtitle=Region,
fillstyle=quartile,
legend=true,
mean=false,
quartile=true,
rug=true
);