4.4 Pieplot
先ほどと同じ仮想的なアンケートデータを利用して円グラフ(Pieplot)の実装例を示す.
4.4.2 ggplot
を利用する場合
ggplot
ライブラリを利用する場合は,次のような実装になる.
ggplot
に渡すデータはdata.frame
型である必要があるため,変換をしてから処理を行う.
## label count
## 1 Fukuoka 6
## 2 Hokkaido 12
## 3 Osaka 9
## 4 Tokyo 3
ggplot
においては棒グラフと同じgeom_bar()
をcoord_polar()
に円グラフに変換している.
棒グラフと円グラフは表現の違いはあるが要素としては完全に同じということに注意されたい.
4.4.3 Doughnutplot
Dounghnutplot(ドーナッツプロット)は円グラフの中央が空いているグラフものである. Pieplotでは円の大きさによって割合の差が必要以上に大きく見えたりする場合があるが,ドーナツプロットでは 面積よりも割合の比率がより正確に感じ取れることが特徴である.
また,Rのデフォルトのplot
ではドーナッツプロットを作るのは簡単ではないのでここではggplot
による実装のみ紹介する.
df <- as.data.frame(smry) %>% # smryをデータフレームに
rename(label=x, count=Freq) %>% # 列名の変換
mutate( # 新たな特徴量生成
frac = count/sum(count), # 割合
ymax = cumsum(frac), # 割合の累積
ymin = c(0, head(ymax, -1)), # 割合の累積を一つずらしたもの
labelPosition = (ymax + ymin) / 2, # ラベルの表示位置
labelDisplay = paste0(label, "\n value: ", count) # ラベルの表示内容
)
df
## label count frac ymax ymin labelPosition labelDisplay
## 1 Fukuoka 6 0.2 0.2 0.0 0.10 Fukuoka\n value: 6
## 2 Hokkaido 12 0.4 0.6 0.2 0.40 Hokkaido\n value: 12
## 3 Osaka 9 0.3 0.9 0.6 0.75 Osaka\n value: 9
## 4 Tokyo 3 0.1 1.0 0.9 0.95 Tokyo\n value: 3
ggplot(df, aes(ymax=ymax, ymin=ymin, xmax=4, xmin=3, fill=label)) +
geom_rect() +
geom_text(x=2, aes(y=labelPosition, label=labelDisplay, color=label), size=4) +
scale_fill_brewer(palette=3) +
scale_color_brewer(palette=3) +
coord_polar((theta="y")) +
xlim(c(-1, 4)) +
theme_void() +
theme(legend.position = "none")
ドーナッツグラフについては,エクセルやスプレッドシートの方が手軽に作れるのでそちらも参考にして欲しい.