1. ホーム
  2. r

[解決済み】ggplot boxplotでPosition-dodge警告?

2022-02-03 10:05:04

質問

ggplot2で以下のコードでboxplotを作ろうとしています。

p <- ggplot(
      data,
      aes(d$score, reorder(d$names d$scores, median))
     ) +
       geom_boxplot()

名前という因子とスコアという整数があります。

私のコードはプロットを生成しますが、グラフィックはボックスを描画せず(線のみ表示)、警告メッセージ、 "position_dodge requires non-overlapping x intervals." が表示されます。 geom_boxplot(width=5) しかし、これは問題を解決しないようです。どなたか、この問題に対する解決策を提案していただけませんか?

私のボックスプロットはかなり大きく、Y軸に約200の名前の値があることを指摘しておきます。) おそらく、これが問題なのでしょうか?

解決方法は?

グループの数が問題なのではなく、グループが2つしかない場合でも同じものが表示されます。 問題なのは ggplot2 は箱ひげ図を縦に(y に沿って連続、x に沿ってカテゴリカル)描きますが、あなたは横に(x に沿って連続、y に沿ってカテゴリカル)描こうとしているのです。

また、この例にはいくつかの構文上の誤りがあり、再現性がありません。 data / d .

モックデータから始める

dat <- data.frame(scores=rnorm(1000,sd=500), 
                  names=sample(LETTERS, 1000, replace=TRUE))

サンプルコードの修正版です。

ggplot(dat, aes(scores, reorder(names, scores, median))) + geom_boxplot()

<イグ

これが、ご覧いただいた横線です。

代わりに、カテゴリーを x 軸に、連続を y 軸にとると、次のようになります。

ggplot(dat, aes(reorder(names, scores, median), scores)) + geom_boxplot()

<イグ

最後に、座標軸を反転させたい場合は coord_flip() . さらに高度なことをする場合、これにはいくつかの追加問題が発生する可能性がありますが、基本的な箱ひげ図ではうまくいきます。

ggplot(dat, aes(reorder(names, scores, median), scores)) + 
  geom_boxplot() + coord_flip()

<イグ