0

我有两张地图:

  1. 西费城的双变量叶绿素图显示了 2014 年至 2019 年非学生人口与学生人口的人口普查区人口变化
  2. 人口普查区域质心的经纬度数据,根据 2019 年每块区域的总租金中位数以连续比例着色

我希望将中值总租金数据覆盖在叶绿素地图上,然后使用光线着色器将其转换为 3D 地图。

我可以很容易地使用 geom_sf() 和 geom_point() 创建一个 2D 版本。当我这样做时,数据排列整齐,我没有遇到任何问题。当我尝试将其设为 3D 时,问题就来了。

由于我的底图是双变量的,因此我一直在研究Carrie Lo 的帖子,并进行了一些修改。

          bivariate_pop_growth <- bi_class(Pop_Change_Census_Tracts, 
                                           x = Perc_Pop_Change, 
                                           y = Perc_Stud_Pop_Change, 
                                           style = "quantile", 
                                           dim = 3)
          
          bivariate_pop_growth_map <- ggplot() +
                                        geom_sf(data = bivariate_pop_growth, 
                                                mapping = aes(fill = bi_class), 
                                                color = NA, size = 0.1,
                                                linetype = 1,
                                                lwd = 0.25,
                                                show.legend = FALSE) + 
                                        bi_scale_fill(pal = "DkViolet", dim = 3) +
                                        geom_sf(data = Promise_Zone, 
                                                color = "black",
                                                lwd = 0.33,
                                                fill = NA) +
                                        theme(plot.title = element_blank(),
                                              legend.position = "none", 
                                              axis.text.x = element_blank(),
                                              axis.title.x=element_blank(),
                                              axis.line = element_blank(), 
                                              axis.text.y = element_blank(), 
                                              axis.title.y=element_blank(),
                                              axis.ticks = element_blank(), 
                                              rect = element_blank(),
                                              panel.background = element_blank()) +
                                        bi_theme()  

          # Save as PNG
          xlim = ggplot_build(bivariate_pop_growth_map)$layout$panel_scales_x[[1]]$range$range
          ylim = ggplot_build(bivariate_pop_growth_map)$layout$panel_scales_y[[1]]$range$range
          ggsave("bivariate_pop_growth_map.png",
                 width = diff(xlim)*100, 
                 height = diff(ylim)*100, 
                 units = "cm")

一切正常,直到我尝试将散点图点映射到 .png 上。

final_bivariate_pop_growth_map <- readPNG("C:/Users/Nissim.Lebovits/OneDrive - City of Philadelphia/Desktop/Data/MML/American Communities Survey/bivariate_pop_growth_map.png")
          
          
            MGR_2D <- ggplot(Pop_Change_Census_Tracts) +
                          annotation_custom(rasterGrob(final_bivariate_pop_growth_map, 
                                                 width = unit(1,"npc"), 
                                                 height = unit(1,"npc"),
                                                 interpolate = TRUE), 
                                                 xmin = -Inf, 
                                                 xmax = Inf, 
                                                 ymin = -Inf, 
                                                 ymax = Inf) + 
                                                 xlim(xlim[1],xlim[2]) + # x-axis Mapping
                                                 ylim(ylim[1],ylim[2]) + # y-axis Mapping
                          geom_point(aes(x = INTPTLON10, 
                                         y = INTPTLAT10, 
                                         color = Median_Gross_Rent)) +
                          scale_colour_gradient(name = "PZ_Median_Gross_Rent", 
                                                limits = range(Pop_Change_Census_Tracts$Median_Gross_Rent), 
                                                            low ="#FCB9B2", 
                                                            high = "#B23A48") +
                          theme(axis.line=element_blank(), 
                                axis.text.x=element_blank(), 
                                axis.title.x=element_blank(),
                                axis.text.y=element_blank(), 
                                axis.title.y=element_blank(),
                                axis.ticks=element_blank(), 
                                panel.background = element_blank())
                      
            MGR_2D

2D 出来的结果大部分是正确的,但束质心偏离中心,偏左一点。然后,当我尝试通过 plot_gg() 运行它时,而不是让底图保持 2D,人口普查区域多边形和质心点都出现在 3D 中

MGR_2D %>% 
                plot_gg(multicore = FALSE,
                        units = "cm",
                        scale = 100 )

我整天都在玩这个,无法弄清楚为什么 plot_gg() 将 .png 底图视为要放入 3D 的数据。关于如何解决这个问题有什么想法吗?

4

0 回答 0