中国未显示在 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 来确定。