调整ggplot2中的图例和颜色

时间:2014-06-23 18:23:47

标签: r plot ggplot2

我正在使用以下数据:

testdf = structure(list(var1 = c(14.9, 15.5, 16.5, 16.6, 15.1, 13.8, 13.2, 
27.6, 22.3, 29.1, 18.4, 14.8, 15.7, 14.3, 15.5, 15.8, 17.6, 14.9, 
16.9, 20.8, 13.9, 20.1, 16.9, 24.7, 15.2, 15.9, 15.8, 17.1, 15.9, 
17.3, 17.5, 14.7, 21, 12, 18.6, 16.1, 16.1, 15.8, 15.9, 13.9, 
13.6, 13.6, 14.2, 13.9, 14.1, 13.9, 13.7, 13.6, 13.9, 13.2), 
    age = c(7L, 7L, 8L, 10L, 7L, 11L, 9L, 14L, 12L, 15L, 10L, 
    12L, 12L, 9L, 9L, 10L, 15L, 10L, 12L, 14L, 15L, 13L, 15L, 
    13L, 11L, 9L, 14L, 12L, 12L, 15L, 13L, 12L, 15L, 7L, 14L, 
    8L, 10L, 8L, 9L, 9L, 8L, 10L, 9L, 9L, 11L, 10L, 10L, 9L, 
    9L, 9L)), .Names = c("var1", "age"), row.names = c(NA, 50L
), class = "data.frame")

我可以使用以下代码获得直方图:

ggplot(testdf)+geom_histogram(aes(var1,group=age,color=age,fill=age))

但我怎样才能在所有这些年龄组的传奇和不同颜色中获得年龄7,8,9,10,11,12,13,14,15,例如彩虹(9)

我尝试了以下代码,但它们只能部分工作:

ggplot(testdf)+geom_histogram(aes(var1,group=age,color=age,fill=age))+scale_colour_continuous(breaks=c(7:15),color=rainbow(9))

ggplot(testdf)+geom_histogram(aes(var1,group=age,color=age,fill=age, legend=F))+scale_colour_continuous(breaks=c(7:15))

1 个答案:

答案 0 :(得分:2)

正如@nrussel所说,你必须将age转换为因子变量。你可以在ggplot2内完成。此外,在这种情况下,您实际上并不需要groupcolour参数。

使用:

ggplot(testdf)+
  geom_histogram(aes(var1, fill=as.factor(age)))

你应该得到以下结果: enter image description here