Изменить цвет точек дрожания в соответствии с facet_wrap - PullRequest
1 голос
/ 30 мая 2019

Я хочу сравнить количество разноцветных цветов (красного и зеленого) на двух разных участках. У меня есть boxplot в ggplot2 с графиком дрожания на заднем плане. Я хочу, чтобы цвет точек дрожания был разным в зависимости от цвета цветов. Не уверен, как это сделать! Есть ли способ кодировать мои грани в зависимости от цвета цветка?

Некоторые примеры данных:

site <- c(rep(1, 4), rep(2, 4))

colour <- c("red", "green", "red", "green", "red", "green", "red", "green")
number <- c(12, 24, 22, 14, 12, 16, 18, 17)

df <- data.frame(site, colour, number)
df$site <- as.factor(df$site)

ggplot(df, aes(site, number))+
  facet_wrap("colour")+
  geom_jitter(alpha = 0.3) +
  geom_boxplot(alpha = 0, colour = "black")+
  theme(legend.position = "none")

Ответы [ 3 ]

1 голос
/ 30 мая 2019
ggplot(df, aes(site, number))+
  facet_wrap(~colour)+
  geom_jitter(aes(col = colour), alpha = 0.3, show.legend = F) +
  geom_boxplot(alpha = 0, colour = "black")+
  scale_color_manual(values = c("green", "red"))

enter image description here

1 голос
/ 30 мая 2019

Хотя оба ответа здесь относятся к вашей проблеме, я думаю, что они излишне запутаны.

ggplot(df, aes(site, number)) +
  facet_wrap(~colour) +
  geom_jitter(alpha = 0.3, color = colour) +
  geom_boxplot(alpha = 0, color = "black")

Создано в 2019-05-30 с помощью пакета Представить (v0.3.0)

  • Вам не нужно theme(legend.position = "none"), поскольку внутри вашего geoms у вас нет аргументов внутри aes().

  • В одном из ответов, в то время как мы устанавливаем положение легенды на none (это необходимо, поскольку colour находится внутри aesthetics), у нас также есть show.legend = F, который является избыточным.

  • Ваши столбцы colour уже c("red", "green"), поэтому нам не нужно использовать scale_color.

1 голос
/ 30 мая 2019

Цвет карты на имя вашего столбца. Если вы хотите, чтобы цвет интерпретировался буквально, используйте шкалу идентичности:

ggplot(df, aes(site, number))+
  facet_wrap(colour)+
  geom_jitter(aes(colour = colour), alpha = 0.3) +
  geom_boxplot(alpha = 0, colour = "black") +
  scale_color_identity() +
  theme(legend.position = "none")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...