2016-10-26 18 views
0

Я видел много вариаций этой проблемы, а также сообщение об ошибке, которое я получаю. Однако ни одна из ситуаций не похожа на то, что я пытаюсь сделать. Скажем, у меня есть некоторые данные, которые выглядят немного как это:Невозможно установить цвет вручную с помощью ..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, поэтому я решил попробовать вместо этого).

ответ

2

Вам нужно просто добавить 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")) 

enter image description here

+0

Спасибо. Я думал, что попробовал это, но у меня должно было быть только «fill = r», а не 'color = r'. – JoeF