[R/SAS/Python]100%積み上げ縦棒グラフ

目的
以下のデータを用いて100%積み上げ縦棒グラフを作成する。

データ

CATE1CATE2VAR
AA15
AA23
BB17
BB26
CC110
CC215

プログラム

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")
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;
  vbar 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 = "bar", x = "CATE", y = ["PROP1","PROP2"], stacked = True)

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です