R 停止多个ggplot共享同一比例\u颜色\u手册?

R 停止多个ggplot共享同一比例\u颜色\u手册?,r,ggplot2,R,Ggplot2,我有多个GGPlot要存储在列表中。但是,它们可能有我想要使用的不同色阶。下面第1节和第2节显示了该示例。每一个都能自己完美地生成情节。但是,如果我将两者结合起来,因为第二个颜色比例(1)比第一个(3)少,所以在以后打印第一个颜色比例时会返回错误。(错误:手动比例中的值不足。需要3,但只提供1。)不确定这是否是因为早期版本的ggplot(2.1.0)。感谢任何解决此类问题的想法 data1<-mtcars; data1$cyl<-as.factor(data1$cyl); #sect

我有多个GGPlot要存储在列表中。但是,它们可能有我想要使用的不同色阶。下面第1节和第2节显示了该示例。每一个都能自己完美地生成情节。但是,如果我将两者结合起来,因为第二个颜色比例(1)比第一个(3)少,所以在以后打印第一个颜色比例时会返回错误。(错误:手动比例中的值不足。需要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));

data1两个图形的
colorcount
使用相同的变量。因此,当您调用第一个绘图时,在影响1到
colorcount
之后,值的数量是错误的(1而不是3)

如果你换成

colourCount <- list()
colourCount[[1]] <- 3;
...
colourCount[[2]] <- 1;

colorcount这是R,不是JavaScript。分号?斯利?非常感谢您的回复@timat。在这种简单的情况下,它确实有效。但是,当它变成循环时(在循环中我仍然定义colorcount[[ii]]),它对我不起作用。不确定是什么导致了问题。但我发现解决方法是在每个循环中创建对象后,调用ggplot_build(plotlist[[ii]])。看来这样的错误会消失的。不过,再次感谢你。不客气。如果在这种情况下有效,您是否可以将其标记为已解决?(单击向下投票箭头下的灰色复选框。谢谢。)