41

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

次のコマンドを使用して、次の箱ひげ図グラフを作成し、個々のデータ ポイントでオーバーレイすることができました。

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")) 

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

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

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

4

1 に答える 1

54

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

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"))

ここに画像の説明を入力

この配色では、箱ひげ図の内側にある点は表示されません (箱ひげ図の塗りつぶしと同じ色であるため)。おそらく、箱ひげ図を中空のままにして、その線を色で描く方が良いでしょう.

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"))

ここに画像の説明を入力

最後に、各年齢は既に x 軸によって明確に定義されているため、本当に各年齢に異なる色を付ける必要があるかどうかを検討してください。

于 2012-05-29T21:03:56.393 に答える