Shingoの数学ノート

プログラミングと機械学習のメモ

SASでグラフを描いてみよう(棒グラフ、折れ線グラフ編)

日付:    カテゴリ: SAS


前回の続きです。今回は棒グラフ、折れ線グラフを描きましょう。


棒グラフを書くための準備

今回はあるクラスの人の名前、性別、年齢、身長、体重等が入っているclassデータセットを使用します。以下のコードを実行してください。

data class;
  set sashelp.class;
run;
ods graphics on;
ods graphics /width=16cm height=12cm;

こんなデータです。

data1

棒グラフ

一番シンプルなのは度数棒グラフです。年齢ごとの度数棒グラフを出してみましょう。


title "年齢ごとの度数棒グラフ(縦)";
proc sgplot data=class;
  vbar age;
run;

結果
bar1

年齢ごとに性別がどれくらいの割合いるかを調べたいのであれば、「group=」が便利です。


title "年齢・性別ごとの度数棒グラフ(縦)";
proc sgplot data=class;
  vbar age/
  group=sex groupdisplay=stack;
run;

結果
bar2

度数ではなく、ある連続変数値を棒にしたいときもあります。その場合、「response=」を使用しましょう。


title "名前ごとの体重の棒グラフ(縦)";
proc sgplot data=class;
  vbar Name/response=Weight;
run;

bar3

横棒グラフにしたいときはhbarステートメントを使用しましょう。


title "名前ごとの体重の棒グラフ(横)";
proc sgplot data=class;
  hbar Name/response=Weight;;
run;

bar4

折れ線グラフを書くための準備

折れ線グラフを描くために、IBM、Intel、Microsoftの株の値段が入っているStocksデータを加工して使用します。以下のコードを実行してください。


data stocks_2000;
  set sashelp.stocks;
  file log;
  where substr(put(date, yymmddn8.), 1, 4)="2000";
  format date yymmddn8.;
run;

proc sort data=stocks_2000;
  by date;
run;

proc transpose data=stocks_2000 out=stocks_2000_transpose;
  var volume;
  by date;
  id stock;
run;

こんなデータです。

data2

折れ線グラフ

折れ線グラフを描くにはvlineを使用します。今回は3つの線を同時に書きます。

title "StockごとのDate-Volume折れ線グラフ";
proc sgplot data=stocks_2000_transpose;
  vline date/response=IBM;
  vline date/response=Intel;
  vline date/response=Microsoft;
  xaxis type=time interval=month;
  yaxis min=0 max=150000000 label="Volume";
run;

結果
vline

ちなみに、今まで使っていませんでしたが、sgplotのxaxisとyaxisはどのグラフでも使用可能で、x軸やy軸の設定を行います。グラフの見た目にこだわりたい方はぜひ使用してください!


Comment Box is loading comments...