spatial - 如何在空间上绘制属性参数?
问题描述
下面是我的代码。我想在南非地图上绘制二氧化碳分布。
加载包
library(tidyverse)
theme_set(theme_bw())
library("sf")
library("rnaturalearth")
library("rnaturalearthdata")
将世界分配给世界数据的国家
world <- ne_countries(scale = "medium", returnclass = "sf")
使用 CO2 和地理坐标(Lon 和 Lat)读取本地文件
SA_CO2 <- read_csv2("C:/Users/Xolile Ncipha/Documents/SA_CO2_DJF_2004_2009.csv")
将数据框转换为 sf 对象,将坐标参考系投影转换为 WGS84,即 CRS 代码#4326。
(SA_CO2 <- st_as_sf(SA_CO2, coords = c("Lon", "Lat"), crs = 4326, agr = "constant"))
绘制地图并用二氧化碳数据覆盖我的代码/脚本的输出。
ggplot(data = world) + geom_sf() + geom_sf(data = SA_CO2, aes(fill = CO2)) +
二氧化碳传奇
scale_fill_gradientn(colors = sf.colors(10)) +
将地图限制在南非领域。
coord_sf(xlim = c(15, 35), ylim = c(-36, -22.3), expand = FALSE) +
轴标签
xlab("Longitude") + ylab("Latitude")
结果是地图上的地理点。我没有得到二氧化碳数据的叠加及其空间分布。我附上了一张结果地图和空间数据的图片。
解决方案
这是一个很好的问题。但是,不幸的是,您没有提供指向数据源的链接(“SA_CO2_DJF_2004_2009.csv”),因此我有必要创建一些可能与您的数据有些相似但可能不完全相同的数据。
我在您的代码的以下行中发现了拼写错误。即使在更正拼写错误之后,这行代码仍然会导致错误。
scale_fill_gradientn(colors = sf.colors(10)) +
我使用的数据包括 2010-2016 年间来自 SA 的二氧化碳吨数。我还选择了几个有其他来源人口的南澳城市,然后按照城市总人口的比例分配南澳年二氧化碳排放量。因此,人口较少的城市分配的年二氧化碳比例较小,而较大的城市分配的二氧化碳比例较大。
https://howsouthafrica.com/major-cities-international-airports-south-africa/
https://data.worldbank.org/indicator/EN.ATM.CO2E.KT?locations=ZA&view=map
用于创建以下链接中显示的绘图的代码是:
ggplot(data = world) +
geom_sf() +
geom_sf(data = coor.sf, aes(size = tons),
fill = "blue", color = "blue", alpha = .3) +
coord_sf(xlim = c(15, 35), ylim = c(-36, -22.3),
expand = FALSE) + xlab("Longitude") + ylab("Latitude")
如果您有任何问题,请给我发电子邮件。
推荐阅读
- c++ - 检查失败:GetOpGradFactory()->insert({op, func}).second MapAccumulate 的重复梯度
- c++ - 如何使用自定义非纯交换函数对算法进行参数化?
- sql - SQL 在结果中连接 2 个相同的列
- python - HTML 看不到 django 表单(django 表单不呈现/显示)
- c# - Linq 投影计数(按 ID)
- cloudflare - 是否可以使用钩子更改 Cloudflare App 中的产品?
- angular - 查看封装问题 angular5
- swift - swift firestore将用户附加到数组 - 完成块
- c# - “ObjectContext 实例已被释放,不能再用于需要连接的操作。”
- visual-studio-code - 为什么我的恢复文件菜单总是被禁用?