Невозможно установить цвет вручную с помощью..count .., geom_point и facet_wrap
Я видел много вариаций по этой проблеме, а также сообщение об ошибке, которое я получаю. Однако ни одна из ситуаций не похожа на то, что я пытаюсь сделать. Скажем, у меня есть некоторые данные, которые выглядят примерно так:
r <- c("zero", "r", "zero", "zero", "r", "r", "r", "zero", "r", "r")
store <- c("Saks", "Saks", "Klein's", "Macy's", "Saks", "Klein's", "Macy's", "Macy's", "Klein's", "Saks")
dat <- data.frame(r, store)
# Specify the colors
cols <- c(r = "#1B79A5", zero = "#FD7701")
Я могу получить то, что я хочу с цветами ggplot2 по умолчанию следующим образом:
ggplot(data = dat, aes(x = r, shape = r, colour = r, ..count..)) +
geom_point(stat = "count", size = 3) +
facet_wrap(~ store)
Проблема возникает, когда я пытаюсь добавить пользовательские цвета. Если я не добавлю facet_wrap()
слой, проблем нет:
ggplot(data = dat, aes(x = r, fill = r, shape = r, ..count..)) +
geom_point(stat = "count", color = cols, size = 3)
Однако, если я добавлю слой facet_wrap()
ggplot(data = dat, aes(x = r, fill = r, shape = r, ..count..)) +
geom_point(stat = "count", color = cols, size = 3) +
facet_wrap(~store)
Я получаю сообщение об ошибке, Aesthetics must be either length 1 or the same as the data (6): colour, size
,
Опять же, здесь много постов с похожим сообщением об ошибке, но ни один из них не делал то же самое, что и я.
Я также попробовал много вариантов с попытками scale_fill_manual(values = cols)
но это ничего не сделало: никаких сообщений об ошибках, а только черные точки.
(Я обычно использую гистограммы в этом сценарии без затруднений, но я пытаюсь выяснить различные аспекты ggplot2, поэтому я решил попробовать это вместо этого).
1 ответ
Вам просто нужно добавить scale_color_manual()
на ваш первый сюжет, который работал на вас, но с цветами по умолчанию.
ggplot(data = dat, aes(x = r, shape = r, colour = r, ..count..)) +
geom_point(stat = "count", size = 3) +
facet_wrap(~ store) +
scale_color_manual(values = c("#1B79A5", "#FD7701"))