web-dev-qa-db-ja.com

ボックスプロットに色を追加-「離散スケールに連続値が指定されました」エラー

おそらく私の問題に対する非常に簡単な解決策がありますが、満足のいく答えをオンラインで見つけることができませんでした。

次のコマンドを使用して、次のボックスプロットグラフを作成し、個々のデータポイントでオーバーレイすることができました。

ggplot(data = MYdata, aes(x = Age, y = Richness)) + 
  geom_boxplot(aes(group=Age)) + 
  geom_point(aes(color = Age))

追加/変更したいことがいくつかあります。

1。左から右に6つの異なる色を使用して、各ボックスプロットの線の色や塗りつぶし(「年齢」に応じて)を変更します。

c("#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00")

私は試した

ggplot(data = MYdata, aes(Age, Richness)) + 
  geom_boxplot(aes(group=Age)) + 
  scale_colour_manual(values = c("#E69F00", "#56B4E9", "#009E73", 
                                 "#F0E442", "#0072B2", "#D55E00")) 

しかし、結果は"Continuous value supplied to discrete scale"エラー。

2。左から右に6つの異なる色を使用して、各データポイントの色を(「年齢」に応じて)変更します。

c("#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00")

私は試した:

ggplot(data = MYdata, aes(Age, Richness)) + 
  geom_boxplot(aes(group=Age)) + 
  geom_point(aes(color = Age)) + 
  scale_colour_manual(values = c("#E69F00", "#56B4E9", "#009E73", 
                                 "#F0E442", "#0072B2", "#D55E00")) 

ただし、エラーも発生します。

離散スケールに供給される連続値

凡例のテキストを「0か月」、「1か月」、「3か月」、「6か月」、「9か月」、「12か月」に変更します。

38
Dalmuti71

まず、サンプルデータを提供すると役立ちます。あなたがしなかったので、ここにいくつかあります:

MYdata <- data.frame(Age = rep(c(0,1,3,6,9,12), each=20),
                    Richness = rnorm(120, 10000, 2500))

パート1と2は同じ問題に由来します。 Ageは連続変数ですが、(年齢の特定の値の色を指定することにより)離散スケールで使用しようとしています。一般に、スケールは変数をビジュアルにマップします。連続した年齢の場合、データに表示されるものだけでなく、年齢のあらゆる可能な値に対応する色があります。ただし、年齢を一部の美学のカテゴリ変数(因子)として同時に扱うことができます。質問の3番目の部分では、スケールの説明内で、スケールの特定の区切りに対応する特定のラベルを定義できます。これをすべてまとめる(そして、例にあるもののようにラベル付けされたx軸を与​​えるために何かを追加する):

ggplot(data = MYdata, aes(x = Age, y = Richness)) + 
  geom_boxplot(aes(fill=factor(Age))) + 
  geom_point(aes(color = factor(Age))) +
  scale_x_continuous(breaks = c(0, 1, 3, 6, 9, 12)) +
  scale_colour_manual(breaks = c("0", "1", "3", "6", "9", "12"),
                      labels = c("0 month", "1 month", "3 months",
                                 "6 months", "9 months", "12 months"),
                      values = c("#E69F00", "#56B4E9", "#009E73", 
                                 "#F0E442", "#0072B2", "#D55E00")) +
  scale_fill_manual(breaks = c("0", "1", "3", "6", "9", "12"),
                      labels = c("0 month", "1 month", "3 months",
                                 "6 months", "9 months", "12 months"),
                      values = c("#E69F00", "#56B4E9", "#009E73", 
                                 "#F0E442", "#0072B2", "#D55E00"))

enter image description here

このカラースキームでは、ボックスプロット内にあるポイントは表示されません(ボックスプロットの塗りつぶしと同じ色であるため)。おそらく、箱ひげ図を空のままにして、その線を色で描く方が良いでしょう。

ggplot(data = MYdata, aes(x = Age, y = Richness)) + 
  geom_boxplot(aes(colour=factor(Age)), fill=NA) + 
  geom_point(aes(color = factor(Age))) +
  scale_x_continuous(breaks = c(0, 1, 3, 6, 9, 12)) +
  scale_colour_manual(breaks = c("0", "1", "3", "6", "9", "12"),
                      labels = c("0 month", "1 month", "3 months",
                                 "6 months", "9 months", "12 months"),
                      values = c("#E69F00", "#56B4E9", "#009E73", 
                                 "#F0E442", "#0072B2", "#D55E00"))

enter image description here

最後に、x軸によって既に明確に定義されているため、各年齢を実際に異なる色にする必要があるかどうかを検討します。

51
Brian Diggs