[R/SAS/Python]100%積み上げ横棒グラフ
目的
以下のデータを用いて100%積み上げ横棒グラフを作成する。
データ
CATE1 | CATE2 | VAR | ||
---|---|---|---|---|
A | A1 | 5 | ||
A | A2 | 3 | ||
B | B1 | 7 | ||
B | B2 | 6 | ||
C | C1 | 10 | ||
C | C2 | 15 |
プログラム
RSASPythom
#ライブラリ呼び出し library(ggplot2) #データ作成 DATA <- data.frame(CATE1 = c("A","A","B","B","C","C"), CATE2 = c("A1","A2","B1","B2","C1","C2"), VAR = c(5,3,7,6,10,15)) #100%積み上げ横棒グラフ作成 g <- ggplot(DATA, aes(x = CATE1, y = VAR, fill = CATE2)) g <- g + geom_bar(stat = "identity", position = "fill") g <- g + coord_flip() plot(g)

/* データセットの作成 */ data DATA; input CATE1 $ CATE2 $ VAR; cards; A A1 5 A A2 3 B B1 7 B B2 6 C C1 10 C C2 15 ; run; /* 100%積み上げ横棒グラフ作成 */ proc sgplot data = DATA pctlevel = group; hbar CATE1 / response = VAR group = CATE2 groupdisplay = stack stat = percent; run;

pctlevel = groupと指定することでグループ別のパーセンテージを計算する。
#ライブラリ呼び出し import pandas as pd #データフレームの作成 DATA = pd.DataFrame({ 'CATE' : (["A","B","C"]), 'VAR1' : ([5,7,10]), 'VAR2' : ([3,6,15]) }) #割合を算出 DATA = DATA.assign( PROP1 = DATA["VAR1"]/sum([DATA["VAR1"],DATA["VAR2"]]), PROP2 = DATA["VAR2"]/sum([DATA["VAR1"],DATA["VAR2"]]) ) #積み上げ横棒グラフ作成 DATA.plot(kind = "barh", x = "CATE", y = ["PROP1","PROP2"], stacked = True) </pre> <!-- /wp:enlighter/codeblock -->

ご意見・ご要望などありましたらコメント欄に書き込みくださいませ。
新規記事投稿のリクエストなどあれば問い合わせフォームからどうぞ。