颜色渐变与ggplot2中的堆积条形图

时间:2010-09-16 23:12:07

标签: r ggplot2

堆积条形图默认使用基于色调的色阶,以区分条形图的不同部分。由于我的堆栈对应的因子级别是有序的,我想使用梯度刻度。

这是一些补充的问卷数据

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

有没有办法解决这个问题?

编辑:

在问题上睡觉之后,我认为手动缩放可能是答案,但我也无法做到这一点。

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

2 个答案:

答案 0 :(得分:1)

哈德利的建议有效。

p1 + scale_fill_brewer(type = "div")

答案 1 :(得分:0)

您可能想尝试:scale_fill_brewer(palette="RdYlGn")

我正在做类似的代码而手册效果不好。

使用此scale_fill_brewer,您可以使用调色板颜色:RdYlGn,Reds等