中国未显示在 R 的等值线图上
China not showing on chloropleth map in R
我正在尝试在 r 中制作一个简单的叶绿素图。虽然我可以创建地图,但中国根本没有出现,在地图上留下了一个大洞。我已经检查过中国在数据中,所以我不确定发生了什么。这是我的代码:
library(tidyverse)
library(maps)
## load data ----
data(country.map, package = "choroplethrMaps")
co2 <- read.csv("https://raw.githubusercontent.com/acircleda/tmp/master/food emissions.csv") %>%
mutate(region = tolower(country))
data<-co2 %>%
left_join(country.map, by="region") %>%
group_by(region) %>% mutate(
c02sum = sum(co2_emmission)
)
ggplot(data, aes(long, lat, group = group))+
geom_polygon(aes(fill = c02sum), color = "white", na="grey80")+
scale_fill_viridis_c(option = "C")
##no china
china<-data %>% filter(region == "china") ##china is in the data
问题出在您的数据连接上。您真正想要的是 right_join
。 NA 可以在 scale_fill
函数中用 na.value =
.
着色
library(tidyverse)
library(maps)
## load data ----
data(country.map, package = "choroplethrMaps")
co2 <- read_csv('your.csv')%>%
mutate(region = tolower(country))
data <- co2 %>%
right_join(country.map, by="region") %>% #critical
group_by(region)
ggplot(data, aes(long, lat, group = group))+
geom_polygon(aes(fill = co2_emmission), na.rm ="grey80") +
scale_fill_continuous(na.value = 'grey')
需要先分组,汇总,再加入。我也会做一个完整的连接,看看地图中是否有任何国家不在你的 co2 数据中,以及你的 co2 数据中是否有任何国家不在地图中(它们将显示为灰色).右连接应该给出相同的结果,但是左连接会导致这些缺失的国家看起来完全缺失,这看起来很奇怪。
data <- co2 %>%
group_by(region) %>% summarise( # do this first
c02sum = sum(co2_emmission, na.rm=TRUE)) %>%
full_join(country.map, by="region")
ggplot(data, aes(long, lat, group = group)) +
geom_polygon(aes(fill = c02sum), color = "white") +
scale_fill_continuous(na.value = 'grey', name = expression(CO[2]~emission~(tonnes))) +
ggtitle(expression(Global~CO[2]~emissions~by~country)) +
theme_void()
地图中二氧化碳数据缺失的国家(有 50 个)是:
data %>%
filter(is.na(c02sum)) %>%
distinct(region) %>%
arrange(region)
# A tibble: 50 x 1
region
<chr>
1 afghanistan
2 antarctica
3 azerbaijan
4 benin
5 bhutan
6 brunei
7 burkina faso
8 burundi
9 central african republic
10 chad
# … with 40 more rows
你的 co2 数据中不在地图中的国家(有 8 个)是:
data %>%
filter(is.na(long)) %>%
distinct(region)
# A tibble: 8 x 1
region
<chr>
1 barbados
2 bermuda
3 french polynesia
4 grenada
5 maldives
6 malta
7 mauritius
8 new caledonia
您也可以使用 setdiff
来确定。
我正在尝试在 r 中制作一个简单的叶绿素图。虽然我可以创建地图,但中国根本没有出现,在地图上留下了一个大洞。我已经检查过中国在数据中,所以我不确定发生了什么。这是我的代码:
library(tidyverse)
library(maps)
## load data ----
data(country.map, package = "choroplethrMaps")
co2 <- read.csv("https://raw.githubusercontent.com/acircleda/tmp/master/food emissions.csv") %>%
mutate(region = tolower(country))
data<-co2 %>%
left_join(country.map, by="region") %>%
group_by(region) %>% mutate(
c02sum = sum(co2_emmission)
)
ggplot(data, aes(long, lat, group = group))+
geom_polygon(aes(fill = c02sum), color = "white", na="grey80")+
scale_fill_viridis_c(option = "C")
##no china
china<-data %>% filter(region == "china") ##china is in the data
问题出在您的数据连接上。您真正想要的是 right_join
。 NA 可以在 scale_fill
函数中用 na.value =
.
library(tidyverse)
library(maps)
## load data ----
data(country.map, package = "choroplethrMaps")
co2 <- read_csv('your.csv')%>%
mutate(region = tolower(country))
data <- co2 %>%
right_join(country.map, by="region") %>% #critical
group_by(region)
ggplot(data, aes(long, lat, group = group))+
geom_polygon(aes(fill = co2_emmission), na.rm ="grey80") +
scale_fill_continuous(na.value = 'grey')
需要先分组,汇总,再加入。我也会做一个完整的连接,看看地图中是否有任何国家不在你的 co2 数据中,以及你的 co2 数据中是否有任何国家不在地图中(它们将显示为灰色).右连接应该给出相同的结果,但是左连接会导致这些缺失的国家看起来完全缺失,这看起来很奇怪。
data <- co2 %>%
group_by(region) %>% summarise( # do this first
c02sum = sum(co2_emmission, na.rm=TRUE)) %>%
full_join(country.map, by="region")
ggplot(data, aes(long, lat, group = group)) +
geom_polygon(aes(fill = c02sum), color = "white") +
scale_fill_continuous(na.value = 'grey', name = expression(CO[2]~emission~(tonnes))) +
ggtitle(expression(Global~CO[2]~emissions~by~country)) +
theme_void()
地图中二氧化碳数据缺失的国家(有 50 个)是:
data %>%
filter(is.na(c02sum)) %>%
distinct(region) %>%
arrange(region)
# A tibble: 50 x 1
region
<chr>
1 afghanistan
2 antarctica
3 azerbaijan
4 benin
5 bhutan
6 brunei
7 burkina faso
8 burundi
9 central african republic
10 chad
# … with 40 more rows
你的 co2 数据中不在地图中的国家(有 8 个)是:
data %>%
filter(is.na(long)) %>%
distinct(region)
# A tibble: 8 x 1
region
<chr>
1 barbados
2 bermuda
3 french polynesia
4 grenada
5 maldives
6 malta
7 mauritius
8 new caledonia
您也可以使用 setdiff
来确定。