Цветовые градиенты со сложенными гистограммами в ggplot2 - PullRequest
2 голосов
/ 17 сентября 2010

Столбчатые диаграммы с накоплением по умолчанию используют цветовую шкалу на основе оттенков, чтобы различать различные участки столбца. Поскольку уровни факторов, соответствующие моим стопкам, упорядочены, я хотел бы использовать градиентную шкалу.

Вот некоторые готовые данные анкеты

dfr <- data.frame(
  question = c("Do you like R?", "How about Stack Overflow?"),
  rubbish  = c(2, 1),
  so.so    = c(7, 9),
  yippee   = c(41, 40)
)

mdfr <- melt(dfr, measure.vars = c("rubbish", "so.so", "yippee"))

Вот график, который работает, но без градиентной цветовой шкалы

p1 <- ggplot(mdfr, aes(question, value, fill = variable)) +
  geom_bar(position = "stack") +
  coord_flip()

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

p1 + scale_fill_gradient2()
#Error: Non-continuous variable supplied to scale_fill_gradient2.

Если я заставлю переменную цвета заливки быть числовой, то geom_bar жалуется, что она должна составлять категориальную переменную

ggplot(mdfr, aes(question, value, fill = as.integer(variable))) +
  scale_fill_gradient2() +
  geom_bar(position = "stack") +
  coord_flip()
#Error in pmin(y, 0) : object 'y' not found

Есть ли способ обойти это?

EDIT:

После сна над вопросом я подумала, что ответом может быть ручная шкала, но я не могу заставить это работать.

cols <- c(rubbish = "red", so.so = "white", yippee = "blue")
p1 + scale_colour_manual(values = cols)
# Manual scale silently ignored

Ответы [ 2 ]

1 голос
/ 17 сентября 2010

Предложение Хэдли работает.

p1 + scale_fill_brewer(type = "div")
0 голосов
/ 30 октября 2013

Возможно, вы захотите попробовать: scale_fill_brewer(palette="RdYlGn").

Я делаю похожий код, и руководство работает не очень хорошо.

С этим scale_fill_brewer вы можете использовать цвета палитры: Красный, красный и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...