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