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

Ryu*_*san 1 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()  
  }
}
Run Code Online (Sandbox Code Playgroud)

dps*_*del 5

您可能想要scale_fill_gradient而不是scale_color_gradient给定您将amt变量映射到而fill不是color参数。scale_fill_gradient2此外,除非您想指定第三种中间颜色,否则不需要使用。使用正确的比例后,您可以使用 Limits 参数显式设置比例限制:

... + scale_fill_gradient(low = "green", high = "blue",
                            limits = c(0,130000))
Run Code Online (Sandbox Code Playgroud)

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