ggplot:情节中没有颜色

时间:2013-10-18 08:16:26

标签: r plot ggplot2

我正在尝试为我的ggplot添加颜色,但我似乎无法让它工作。我有一个函数PlotAllLayers自动将我的data.frame中的所有内容添加到绘图中。现在我想添加'Dark2'调色板,但它似乎不起作用。

library(ggplot2)
x <- c(0:100)
df <- sapply(seq(5,100,by=10), function(n) dbinom(x,n,.6))
df <- data.frame(x,df)

plotAllLayers<-function(df){
  p<-ggplot(data=df,aes(df[,1]))
  for(i in names(df)[-1]){ 
    p<-p+geom_line(aes_string(y=i))
  }
  return(p)
}

testplot <- plotAllLayers(df)
testplot <- testplot + scale_color_brewer(palette="Dark2")
print(testplot)

1 个答案:

答案 0 :(得分:5)

在函数中迭代添加图层的技术会强制您迭代地指定颜色名称。这不是使用ggplot的规范方法。相反,首先melt您的数据,一切都变得简单:

library(reshape2)
library(ggplot2)
# Melt your data:
melted.df<-melt(df,id.vars='x')
#   x variable   value
# 1 0       X1 0.01024
# 2 1       X1 0.07680
# 3 2       X1 0.23040

# Plot.
ggplot(melted.df,aes(x=x,y=value,colour=variable)) + 
  geom_line() + 
  scale_color_brewer(palette="Dark2")
# Warning that this palette doesn't support 10 colours.