ggplot2: 横向きの棒グラフを作成
前回までに作成した棒グラフは、通常の、下から上に棒が伸びた棒グラフでした。今回は、その縦と横を入れ替えて、左から右に伸びる横向きの棒グラフを紹介します。
横向きの棒グラフは aes()の指定を入れ替える
実は、横向きの棒グラフを作成するのは簡単です。最初の ggplot() の引数に aes() を指定しますが、この中で、x 軸の y 軸に使用するデータを指定していました。この指定を入れ替えるだけです。
例に用いるデータは、前回までと同じ top10 のデータです。
> top10
# A tibble: 10 × 4
weapon total percentage buki
<chr> <dbl> <dbl> <chr>
1 sharp 35209 7.68 シャープマーカー
2 wakaba 30992 6.76 わかばシューター
3 lact450 25510 5.56 LACT-450
4 sshooter 21767 4.75 スプラシューター
5 promodeler_mg 20882 4.55 プロモデラーMG
6 52gal 20309 4.43 .52ガロン
7 bold 17598 3.84 ボールドマーカー
8 furo 16551 3.61 オーバーフロッシャー
9 nzap85 16230 3.54 N-ZAP85
10 variableroller 15452 3.37 ヴァリアブルローラー
何も宣言しなければ、aes() の最初の引数は x 軸、その次の引数は y 軸のデータを指定したことを意味します。これまでは、 aes(buki, percentage) と指定していました。そのため、横 = x 軸に buki が使用されていたわけです。
今回は、横に percentage の棒が伸び、縦に buki が並ぶようにしたいので、 aes(percentage, buki) とすればよいです。コードは次のようになります。
plot_data <- top10 %>%
mutate("buki" = fct_reorder(buki, percentage))
g <- ggplot(plot_data, aes(percentage, buki)) + geom_col()
g + theme(text = element_text(family = "HiraKakuProN-W3"))
割合 (=percentage) の高い順に並ぶように、fct_reorder() で buki をファクターに変換しています(詳細)。また、今回、 y 軸の目盛りとなるテキストは横書きになるので、回転させていません。下記のような結果になります。
棒グラフの項目が多い時や、目盛りのテキストが長い時、棒グラフは横向きにしたほうが適しているかもしれません。上位10個のブキに限らず、55個のブキすべての使用率を表した棒グラフもスムーズに表示できます。
シャープマーカーのカニタンクと、ラクトがマルチミサイルを撃ちまくっていたころが懐かしいですね。こうして見ると、ルールがナワバリにも関わらず、塗りブキでない「リッター4k」 が、パブロと同じくらい使われているのが分かります。練習のため使用する人が多いのでしょうか?ほかのシーズンの結果も作成して、比較してみたいと思います。