绘图技巧

蓝色与地图更配-ggplot2地图进阶

2021-08-27  本文已影响0人  R语言数据分析指南

最近有小伙伴让在出几篇关于地图绘制的教程,观众老爷的需求这个当然要满足;今天继续来介绍ggplot2绘制地图,同样的操作不同的感觉,下面将详细介绍如何绘制下图

1.安装加载R包

package.list=c("tidyverse","cowplot","ggspatial","ggsci")

for (package in package.list) {
  if (!require(package,character.only=T, quietly=T)) {
    install.packages(package)
    library(package, character.only=T)
  }
}

2.构建世界地图数据集

world_map <- map_data("world") %>% dplyr::rename(country=region) %>%
  mutate(country=str_replace(country,"Taiwan","China")) %>% 
  filter(country != "Antarctica") # 剔除南极洲数据

3.构建需要展示的国家数据

map <- c("Australia","China","Denmark","Finland","South Africa",
         "France","Germany","Russia","Egypt",
         "Hungary","Japan","Brazil","UK","USA","Canada") %>% 
  as.data.frame() %>% dplyr::rename(country=".") %>% 
  mutate(country=str_replace(country,"Korea","South Korea")) %>% 
  mutate(cou=country)

4.绘制世界地图

p1 <- world_map %>% left_join(.,map,by="country") %>% 
  ggplot()+
  geom_polygon(aes(x = long, y = lat,group = group,fill = cou),
               color = "black",size = 0.2,show.legend = F)+
  scale_fill_simpsons(na.value="gray70")+  # 将无需显示的国家设置为灰色
  theme_void()+
  theme(plot.background = element_rect(fill="#3ED5F7",
  color="#3ED5F7",size = 1))+
  annotation_north_arrow(location = "bl",pad_x = unit(0.2,"in"),  
                         pad_y = unit(6,"in"),
                         style = north_arrow_nautical(fill = c("grey40","white"),
                         line_col = "grey20")) # 添加指北针
p1

5.构建欧洲主要国家数据集

data <- world_map %>% 
  filter(.,country %in% c("Austria","Belgium","Bulgaria","Croatia","Cyprus",
                          "Czech Rep.","Denmark","Estonia","Finland","France",
                          "Germany","Greece","Hungary","Ireland","Italy","Latvia",
                          "Lithuania","Luxembourg","Malta","Netherlands","Poland",
                          "Portugal","Romania","Slovakia","Slovenia","Spain",
                          "Sweden","UK"))

6.构建国家标签

label <- data %>% 
  filter(.,country %in% c("Denmark","Estonia","Finland","France",
                          "Germany","Sweden","UK")) %>% 
  group_by(country) %>%
  summarise(long = mean(long), lat = mean(lat))

7.绘制欧洲地图

p2 <- data %>% ggplot()+
  geom_polygon(aes(x = long, y = lat,group = group,fill = country),
               color = "black",size = 0.2,show.legend = F)+
  geom_text(data =label,aes(long,lat,label=country),size =3, hjust = 0.5)+ # 添加国家名称
  scale_fill_manual(values= colorRampPalette(brewer.pal(8,"Set2"))(27))+
  theme_void()+
  theme(plot.background = element_rect(fill="#3ED5F7",color="black",size=0.8))
p2

8.拼图

ggdraw(p1) + draw_plot(p2,x=-0.355,y=-0.35,scale=.315)  

喜欢的小伙伴欢迎关注我的公众号

R语言数据分析指南,持续分享数据可视化的经典案例及一些生信知识,希望对大家有所帮助

上一篇下一篇

猜你喜欢

热点阅读