Как дифференцировать группы в гистограмме, но при этом сохранить градиент?

Как изменить шаблон заливки или цветовую группу по группам? Мой текущий код только изменяет схему; Я хочу изменить шаблон заливки или заполнить группу цветов (не наброски) по полу, но также сохранить свой градиент заполнения, который Eye.

colors <- c("Green", "Blue", "Hazel", "Brown")
data <- data.frame(HairEyeColor)
data$Eye <- as.numeric(factor(data$Eye, labels = 1:4))
data <- data[c(5,6,12,15,17,22,27,28), ]

ggplot(data, aes(x = Hair, y = Freq, fill = Eye, group = Sex)) + 
  geom_bar(stat = "identity", position = position_dodge(), aes(colour = Sex)) +
  scale_fill_continuous(low = "blue", high = "green")

введите описание изображения здесь

1 ответ

Решение

Барный участок от ggplot2 В настоящее время пакет не поддерживает шаблон заполнения (и насколько я знаю, это невозможно и с другими пакетами). Однако есть несколько решений, которые помогут легко определить разницу в поле зрения и поле зрения, которые вы можете рассмотреть:

1. Использование разных (легче) fill цвета, более толстые границы баров и theme_bw():

 ggplot(data, aes(x = Hair, y = Freq, fill = Eye, group = Sex)) + 
  geom_bar(stat = "identity", position = position_dodge(), aes(colour = Sex), size=2) +
  scale_fill_continuous(low = "white", high = "grey") + theme_bw()

введите описание изображения здесь

  1. Объединение двух столбцов: Пол и Глаз, чтобы получить новый столбец фактора, который будет использоваться как fill аргумент:

    data$Sex_Eye <- paste(data$Sex, data$Eye, sep="_") ggplot(data, aes(x = Hair, y = Freq, fill = Sex_Eye)) + geom_bar(stat = "identity", position = position_dodge()) + theme_bw()

введите описание изображения здесь

  1. С помощью geom_jitter() вместо geom_bar() и установить аргумент формы как секс:

ggplot(data, aes(x = Hair, y = Freq, colour = Eye, shape = Sex)) + geom_jitter(size=5) + scale_colour_continuous(low = "blue", high = "green") + theme_bw()

введите описание изображения здесь

Другие вопросы по тегам