2

我正在尝试为我的 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)
4

1 回答 1

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.
于 2013-10-18T08:53:04.420 回答