首页 > 解决方案 > 如何在空间上绘制属性参数?

问题描述

下面是我的代码。我想在南非地图上绘制二氧化碳分布。

加载包

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")

结果是地图上的地理点。我没有得到二氧化碳数据的叠加及其空间分布。我附上了一张结果地图和空间数据的图片。

标签: spatialfill

解决方案


这是一个很好的问题。但是,不幸的是,您没有提供指向数据源的链接(“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")

如果您有任何问题,请给我发电子邮件。

[[![SA CO2]]


推荐阅读