我用
plot_usmap
做了一个可爱的叶绿素:
plot_usmap(data = state_difference, values = "my_variable") +
theme(legend.position = "bottom") +
scale_fill_stepsn(breaks = as.vector(quantile(state_difference$median_premium, probs = seq(0, 1, 1/5))), colors = heat.colors(5)) +
labs(title = "Graph title")
然后有人说,“你知道吗?我们应该把地形特征放在这张地图上。”所以我找到了一个很好的定义河流的形状文件:
rivers <- st_read("sources/river_files")
## Match projection to that of 'plot_usmap' (ESRI:102003):
rivers2 <- sf::st_transform(rivers, "ESRI:102003")
这是如此接近:
plot_usmap(data = state_difference, values = "my_variable") +
theme(legend.position = "bottom") +
scale_fill_stepsn(breaks = as.vector(quantile(state_difference$median_premium, probs = seq(0, 1, 1/5))), colors = heat.colors(5)) +
labs(title="Graph title") +
geom_sf(rivers2)
问题是
plot_usmap
将阿拉斯加和夏威夷放在美国大陆以南,而 shapefile 将它们放在它们的实际位置。所以我需要移动美国大陆以南的阿拉斯加和夏威夷的河流来匹配plot_usmap
.
通常的方法(见这里)涉及标记为“阿拉斯加”和“夏威夷”的geoms可以转换,但shapefile只有河流。我尝试将
shift_geometry
应用到rivers2
,但结果是垃圾。