Столбчатые диаграммы с накоплением по умолчанию используют цветовую шкалу на основе оттенков, чтобы различать различные участки столбца. Поскольку уровни факторов, соответствующие моим стопкам, упорядочены, я хотел бы использовать градиентную шкалу.
Вот некоторые готовые данные анкеты
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