1. ホーム
  2. r

[解決済み] ggplot2 の棒グラフで棒を並べる

2022-03-16 04:41:14

質問内容

棒グラフを作ろうとしているのですが、一番大きい棒がy軸に近く、一番短い棒が一番遠くになるようにしたいのです。これは、私が持っている表のようなものです。

    Name   Position
1   James  Goalkeeper
2   Frank  Goalkeeper
3   Jean   Defense
4   Steve  Defense
5   John   Defense
6   Tim    Striker

そこで、ポジション別の選手数を表示する棒グラフを作成しようとしています。

p <- ggplot(theTable, aes(x = Position)) + geom_bar(binwidth = 1)

が、グラフはゴールキーパーのバーを最初に表示し、次にディフェンス、最後にストライカーのバーを表示しています。私は、ディフェンスのバーがY軸に最も近く、ゴールキーパーのバー、そして最後にストライカーのバーという順序でグラフを表示させたいと思っています。 ありがとうございます。

どのように解決するのですか?

順序付けで重要なのは、因子のレベルを希望する順序で設定することです。もしこれらのデータが何らかの統計モデルで使用される場合、間違ったパラメトリックが結果として生じるかもしれません。

## set the levels in order we want
theTable <- within(theTable, 
                   Position <- factor(Position, 
                                      levels=names(sort(table(Position), 
                                                        decreasing=TRUE))))
## plot
ggplot(theTable,aes(x=Position))+geom_bar(binwidth=1)

<イグ

最も一般的な意味では、因子レベルが望ましい順序になるように設定するだけでよい。指定されていない場合、因子のレベルはアルファベット順に並べられます。また、上記のように factor の呼び出しの中でレベルの順序を指定することもできますし、他の方法も可能です。

theTable$Position <- factor(theTable$Position, levels = c(...))