Ggplot2 棒グラフで棒を並べ替える方法
デフォルトでは、 ggplot2 は棒グラフ内の棒を次の順序で配置します。
- 因子変数は因子レベルによって分類されます。
- 文字変数はアルファベット順にリストされています。
ただし、バーを別の特定の順序で並べることに興味がある場合もよくあります。
このチュートリアルでは、次のデータ フレームを使用してこれを行う方法について説明します。
#create data frame df <- data. frame (team = c('B', 'B', 'B', 'A', 'A', 'C'), points = c(12, 28, 19, 22, 32, 45), rebounds = c(5, 7, 7, 12, 11, 4)) #view structure of data frame str(df) 'data.frame': 6 obs. of 3 variables: $ team: Factor w/ 3 levels "A","B","C": 2 2 2 1 1 3 $ points: num 12 28 19 22 32 45 $rebounds: num 5 7 7 12 11 4
例 1: 特定の因子の順序に基づいてバーを順序付ける
チームごとの頻度を表示する棒グラフを作成しようとすると、棒は自動的にアルファベット順に表示されます。
library (ggplot2) ggplot(df, aes(x=team)) + geom_bar ()
次のコードは、バーを特定の順序で並べ替える方法を示しています。
#specify factor level order df$team = factor(df$team, levels = c('C', 'A', 'B')) #create bar chart again ggplot(df, aes(x=team)) + geom_bar ()
例 2: 数値に基づいてバーを注文する
数値に基づいてバーを並べ替えることもできます。たとえば、次のコードは、 reorder()関数を使用してバーを最高頻度から最低頻度まで並べる方法を示しています。
library (ggplot2) ggplot(df, aes(x= reorder (team, team, function (x)-length(x)))) + geom_bar ()
reorder()関数のfunction()呼び出しのマイナス記号を削除することで、バーを最小頻度から最大頻度まで並べ替えることもできます。
library (ggplot2) ggplot(df, aes(x= reorder (team, team, function (x) length(x)))) + geom_bar ()
追加リソース
geom_bar()関数のドキュメント。
reorder()関数のドキュメント。
統計に関する R チュートリアルの完全なリスト。