ggplot2 で geom_bar(stat = "identity")
を利用して棒グラフを作成するときに、横軸の順序を変える方法をまとめてみます。
特に要約データなどを持っていて、ヒストグラムをプロットしたい時などに利用できるかと思います。
方法としては、データフレームに横軸の順序を規定する変数を含めておき、aes
コンポーネントで reorder
関数を使うだけで好きな順序に変更することができます。
require(ggplot2) d <- data.frame( x = c("80-", "90-", "100-", "110-", "120-", "130-", "140-", "150-", "160-", "170-", "180-"), y = c(0, 9, 35, 81, 194, 276, 271, 207, 138, 55, 59), z = seq(1, 11) ) ggplot(d, aes(x = reorder(x, z), y = y)) + geom_bar(stat = "identity") + xlab("Systolic blood pressure [mmHg]") + ylab("Frequency") + theme_gray(20, "serif")
何でこんな方法が必要になるのかというと
ggplot(d, aes(x = x, y = y)) + geom_bar(stat = "identity") + xlab("Systolic blood pressure [mmHg]") + ylab("Frequency") + theme_gray(20, "serif")
ggplot2 がデータフレームを自動的にソートするので、軸ラベルがずれてしまう場合があります。
プロットしたデータ
厚生労働省. 第 5 次循環器疾患基礎結果の概要 [internet]. 2001 Jun. 6. [cited 2011 Jul. 1]. Available from: http://www.mhlw.go.jp/toukei/kouhyo/indexkk_18_1.html