前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着Nature Communication学作图:R语言ggplot2画世界地图展示采样地点

跟着Nature Communication学作图:R语言ggplot2画世界地图展示采样地点

作者头像
用户7010445
发布2023-01-06 18:35:44
2.6K0
发布2023-01-06 18:35:44
举报
文章被收录于专栏:小明的数据分析笔记本

论文

Structure and function of the soil microbiome underlying N2O emissions from global wetlands

https://www.nature.com/articles/s41467-022-29161-3#Sec21

没有找到论文的代码,但是论文的数据是公开的,可以用论文中的数据复现一下论文中的结果,今天的推文试着复现一下论文中的figure1a

世界地图的数据

ggplot2自带了一份地图数据,可以直接使用,这里需要注意的是我们画的是没有国家边界的世界地图,如果是带有国家边界的地图,使用数据的时候需要小心。

ggplot2画地图

代码语言:javascript
复制
library(ggplot2)
world<-map_data("world")
ggplot() +
  geom_polygon(data=world,aes(x=long,y=lat,group=group),
               fill="#dedede")+
  theme_bw()+
  scale_y_continuous(expand = expansion(mult=c(0,0)))+
  scale_x_continuous(expand = expansion(add=c(0,0))) -> world.map

world.map

image.png

采样地点部分数据

image.png

读取数据

代码语言:javascript
复制
library(readxl)

dat01<-read_excel("data/20220603/NC/41467_2022_29161_MOESM12_ESM.xlsx",
                  sheet = "Fig.1a")
head(dat01)

给数据集增加新的一列

代码语言:javascript
复制
dat01 %>% 
  mutate(n2o=case_when(
    N2O<10 ~ "-2..10",
    N2O >= 10 & N2O < 100 ~ "10..100",
    N2O >= 100 ~ "100..500"
  )) -> new.dat01

作图代码

代码语言:javascript
复制
library(ggstar)
world.map + 
  geom_star(data=dat01,
             aes(x=Longitude,y=Latitude,
                 starshape=Land_use,
                 color=`AamoA/nir`,
                 fill=`AamoA/nir`),
            size=4,
            position = position_jitter(width = 10,
                                       height = 10,
                                       seed = 1234))+
  scale_starshape_manual(values=c(11:15,20,9))+
  scale_fill_gradient2(low = "#429eb3",
                       mid = "#e9c922",
                       high = "#f22101",
                       midpoint = 0.5)+
  scale_color_gradient2(low = "#429eb3",
                       mid = "#e9c922",
                       high = "#f22101",
                       midpoint = 0.5) -> world.map.01


world.map.01 +
  geom_point(data=new.dat01,
             aes(x=Longitude,y=Latitude,
                 shape=n2o),
             position = position_jitter(width = 10,
                                        height = 10,
                                        seed = 1234))+
  scale_shape_manual(values = c(3,4,8),
                     name= expression("A^2"))+
  theme(#legend.position = c(0.5,0.5),
        legend.background = element_rect(fill = "transparent"))+
  labs(x="Longitude",y="Latitude")

image.png

这里遇到两个问题

  • 1 这里有三个图例,有没有办法用代码调整每个图例的位置呢?暂时没有找到解决办法
  • 2 图例的标题如何用代码设置上下标暂时没有找到解决办法

这连个问题目前的解决办法是出图后编辑图片

采样地点数据可以到论文中去下载,代码可以在推文中复制

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 论文
  • 世界地图的数据
  • ggplot2画地图
  • 采样地点部分数据
  • 读取数据
  • 给数据集增加新的一列
  • 作图代码
  • 这里遇到两个问题
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档