我有两张地图:
- 西费城的双变量叶绿素图显示了 2014 年至 2019 年非学生人口与学生人口的人口普查区人口变化
- 人口普查区域质心的经纬度数据,根据 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 的数据。关于如何解决这个问题有什么想法吗?