佐藤慧
2019年10月19日
{ggplot2}を利用して帯グラフを作るUCBAdmissions(標準)
1973年のUCバークレーの入試に関するデータ
要約統計量は以下の通り
ucb<-data.frame(UCBAdmissions)
dim(ucb)
## [1] 24 4
summary(ucb)
## Admit Gender Dept Freq
## Admitted:12 Male :12 A:4 Min. : 8.0
## Rejected:12 Female:12 B:4 1st Qu.: 80.0
## C:4 Median :170.0
## D:4 Mean :188.6
## E:4 3rd Qu.:302.5
## F:4 Max. :512.0観察は24, 変数は4.Freqは学生の数を表す.
#入学者だけのサブセットを作る
ucb.students <- subset(ucb,
subset = (ucb$Admit=="Admitted"),
select = c("Gender", "Dept", "Freq")
)
#一番上にくるA学部で男性の方が多いので、
#男性がグラフで左側に来るようにジェンダーの順序を固定した変数に変換
ucb.students$Gender.b <- factor(ucb.students$Gender,
levels = c("Female", "Male")
)
#学部の順序を固定した変数に変換
ucb.students$Dept.b <- factor(ucb.students$Dept,
levels = c("F", "E", "D", "C", "B", "A")
){ggplot2}のコードlibrary(ggplot2)
p<-
#データと描画空間の設定
ggplot(ucb.students,
aes(
x = Dept.b,
y = Freq,
fill = Gender.b
)
)+
#種類を棒グラフに設定
geom_bar(stat = "identity") +
#テーマの設定、サイズを決める、日本語対応させる
theme_classic(base_size = 10,
base_family = "HiraKakuProN-W3"
)+
#軸ラベルとタイトルをつける
xlab("学部")+
ylab("新入生数")+
ggtitle("UCバークレーの学部別新入生数と男女比")+
#色と凡例名、凡例順序の指定 #RColorBrewer::display.brewer.all()で確認できる
scale_fill_brewer(palette = "Dark2",
name = NULL,
breaks = c("Male", "Female"),
labels = c("男性", "女性")
)+
#ひっくり返して帯グラフに
coord_flip()+
#観察数のラベルつける
geom_text(aes(label = Freq),
size = 4,
color = "white",
position=position_stack(vjust = 0.5)
)A,B学部を除くと、女性の方が多いかほぼ同じくらい
しかし、人数の多いA,B学部でかなり比が偏っているので、全体としては女性が少ないように見える
ggplotのテーマとタイトル周りに関して、ggplot2 — きれいなグラフを簡単に合理的に
凡例周りに関して、ggplot2で凡例のラベルと項目名を操作する
ラベル付けに関して、ggplot2 column : How to center stacked percent barchart labels
グラフの積み上げ順序に関して、ggplot2の積み上げグラフで並び順を手動で設定する方法
ご清聴ありがとうございました.