ggplot2:for循环生成重复的图

时间:2017-09-29 09:12:52

标签: r ggplot2

当它在for循环中被抽象时,显然类似的代码会产生不同的结果。

这是两种选择共同的标题代码:

library(ggplot2)
library(gridExtra)

# factor common plot format elements
o2b <- colorRampPalette(c("brown", "orange"))(4)
textsize=8
pt <- theme(panel.grid.major=element_blank(), panel.grid.minor=element_blank(), 
           panel.background=element_blank(), panel.border=element_blank(), 
           plot.title=element_blank(), plot.margin = unit(c(5.5,12,5.5,5.5), "pt"), 
           legend.background=element_blank(), legend.key=element_blank(), legend.position=c(1,1), 
           legend.justification=c(1,1), legend.text=element_text(size=textsize), legend.title=element_text(size=textsize), 
           axis.line=element_line(colour="black"), axis.text=element_text(size=textsize, colour="black"), 
           axis.title=element_text(size=textsize))

1)这是没有for循环的代码:

# fill list of plots of 4 scatterplot rank-size distributions
p <- list()
# each plot differs by setting x values for all scatterplots to the value of x in one of the scatterplots, by turn
p[[1]] <-ggplot(temp1, aes(x=rep(rank[naics_level==2], 4), y=rhh, colour=factor(naics_level))) + pt + 
  geom_point(shape=1, size=1) + scale_color_manual(values=o2b) + 
  guides(colour = guide_legend(title="Niveau de NAICS", title.position = "left", reverse=T)) +  
  labs(x="Rang des MSA", y="Diversité sectorielle basée sur l'emploi en 2015")
p[[2]] <-ggplot(temp1, aes(x=rep(rank[naics_level==3], 4), y=rhh, colour=factor(naics_level))) + pt + 
  geom_point(shape=1, size=1) + scale_color_manual(values=o2b) + 
  guides(colour = guide_legend(title="Niveau de NAICS", title.position = "left", reverse=T)) +  
  labs(x="Rang des MSA", y="Diversité sectorielle basée sur l'emploi en 2015")
p[[3]] <-ggplot(temp1, aes(x=rep(rank[naics_level==4], 4), y=rhh, colour=factor(naics_level))) + pt + 
  geom_point(shape=1, size=1) + scale_color_manual(values=o2b) + 
  guides(colour = guide_legend(title="Niveau de NAICS", title.position = "left", reverse=T)) +  
  labs(x="Rang des MSA", y="Diversité sectorielle basée sur l'emploi en 2015")
p[[4]] <-ggplot(temp1, aes(x=rep(rank[naics_level==5], 4), y=rhh, colour=factor(naics_level))) + pt + 
  geom_point(shape=1, size=1) + scale_color_manual(values=o2b) + 
  guides(colour = guide_legend(title="Niveau de NAICS", title.position = "left", reverse=T)) +  
  labs(x="Rang des MSA", y="Diversité sectorielle basée sur l'emploi en 2015")
library(gridExtra)
grid.arrange(grobs=p, nrow=2)

导致:

enter image description here

2)这与for循环中的代码相同:

p <- list()
for (n in 1:4) {
  p[[n]] <- ggplot(temp1, aes(x=rep(rank[naics_level==n+1], 4), y=rhh, colour=factor(naics_level))) + pt + 
    geom_point(shape=1, size=1) + scale_color_manual(values=o2b) + 
    guides(colour = guide_legend(title="Niveau de NAICS", title.position = "left", reverse=T)) +  
    labs(x="Rang des MSA", y="Diversité sectorielle basée sur l'emploi en 2015")
}
grid.arrange(grobs=p, nrow=2)

导致:

enter image description here

这一次,所有图都是第一种方法获得的第四幅图的副本。我哪里错了?

0 个答案:

没有答案