使用geom_sf()时如何在多个图之间保持比例一致?

时间:2018-06-28 06:33:48

标签: r ggplot2

我制作了一系列绘图,每个绘图的值范围不同,因此各个绘图之间的比例也不同。我正在尝试使比例尺保持一致(从0到130000),所以我将midpoint = 6500设置为,但是似乎不起作用。

 for (i in 2016:2018){
   for (m in 1:12){
       yourfilename=paste(i,m,".jpg",sep="") 
       jpeg(file=yourfilename, width =800, height = 700)

       product_by_month<- data_all%>%
       filter(year==i & month==m)

       product_2010_map<-c_map%>%
       left_join(product_by_month,by=c("name"="city"))

       pp<-ggplot(data=product_2010_map,aes(fill=amt)) + 
           theme(panel.background=element_blank(),
                 plot.title=element_text(hjust=0.5),
                 axis.ticks=element_blank(),
                 axis.text=element_blank())+
           geom_sf()+
           scale_color_gradient2(low = "green", high = "blue",
                                midpoint=6500)
      print(pp)
      dev.off()  
  }
}

1 个答案:

答案 0 :(得分:3)

鉴于您正在将scale_fill_gradient变量映射到scale_color_gradient而不是amt参数,因此您可能希望使用fill而不是color。此外,除非您要指定第三种中间色,否则无需使用scale_fill_gradient2。一旦使用了正确的比例,就可以使用limits参数显式设置比例的极限:

... + scale_fill_gradient(low = "green", high = "blue",
                            limits = c(0,130000))

设置后,无论所绘制数据的范围如何,所有图的比例都将相同。