我有多个ggplots存储在列表中。但是,它们可能有我想要使用的不同颜色。下面的第1节和第2节显示了这个例子。每个人都可以完美地生成图表。但是如果我将两者结合起来,因为第二个比第一个(3)具有更少的色标(1),则在之后打印第一个时会返回错误。(错误:手动刻度中的值不足.3需要但是只提供了1个。)不确定这是否是因为早期版本的ggplot(2.1.0)。欣赏解决此类问题的任何想法。
data1<-mtcars;
data1$cyl<-as.factor(data1$cyl);
#section 1 #
plotlist[[1]]<-ggplot(data1[],aes_string(x='hp',y='wt',group=paste('paste0(','gear',',','cyl',')'),fill=('cyl')))+
geom_bar(stat='identity',position="dodge",size=1);
colourCount <- 3;
getPalette <- colorRampPalette(c(brewer.pal(11, "Spectral")[c(1:3,8:11)]));
plotlist[[1]]<-plotlist[[1]]+scale_colour_manual(values = rep(getPalette(min(colourCount,25)),times=floor(colourCount/25)+1))+
scale_fill_manual(values = rep(getPalette(min(colourCount,25)),times=floor(colourCount/25)+1));#adjust color
#section 2 #
plotlist[[2]]<-ggplot(data1[data1$cyl==4,],aes_string(x='hp',y='wt',group=paste('paste0(','gear',',','cyl',')'),fill=('cyl')))+
geom_bar(stat='identity',position="dodge",size=1);
colourCount <- 1;
getPalette <- colorRampPalette(c(brewer.pal(11, "Spectral")[c(1:3,8:11)]));
plotlist[[2]]<-plotlist[[2]]+scale_colour_manual(values = rep(getPalette(min(colourCount,25)),times=floor(colourCount/25)+1))+
scale_fill_manual(values = rep(getPalette(min(colourCount,25)),times=floor(colourCount/25)+1));
答案 0 :(得分:0)
对于这两个图表,您使用colourCount
的相同变量。所以当你调用第一个情节时,在影响1到colourCount
之后,值的数量是错误的(1而不是3)
如果您改为
colourCount <- list()
colourCount[[1]] <- 3;
...
colourCount[[2]] <- 1;
并在其工作的每个图中使用相应的变量名。