复现《nature communications》图表:ggplot添加图片/示意图元素

一直以来想写一个帖子,就是关于ggplot中插入图片或者示意图。不仅会让图形表示更加清晰,也更加生动。正好看到一篇NC上的图表《Reference:Trophic position of Otodus megalodon and great white sharks through time revealed by zinc isotopes》,如下:

image.png

图的特点是类似于表格,其实ggplot用分割线就可实现效果。有一列是各种鱼的简笔画,表示不同的品种,一目了然。原文提供了作图原数据,为了演示简化,我们对数据进行了改造。

示例数据及注释代码已上传群文件!---更多内容请关注我的公众号《KS科研分享与服务》

作图:读入数据,加载R包。

setwd("D:/KS项目/ggplott图片")
A <- read.csv("ESM.csv", header = T)
library(ggplot2)
library(ggsci)

ggplot基本作图,改变坐标轴范围,添加分割线。

p <- ggplot(A, aes(Genus, d66Zn, 
              fill=Genus))+
  geom_point(shape=22, size=3)+
  theme_bw()+
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.line=element_line(colour="black"),
        axis.title.x = element_blank(),
        axis.text.x = element_text(size = 10,angle = 45,
                                   vjust = 1,hjust = 1, 
                                   color = 'black'),
        axis.text.y = element_text(size = 10, color = 'black'),
        plot.title = element_text(hjust = 0.5,size=15),
        legend.position = "NA")+
  labs(y=expression(''~σ^66~'Zn(‰ JMC Lyon)'))+
  ylim(-0.8, 1)+
  geom_hline(yintercept = 0.6, cex=0.5)+
  geom_hline(yintercept = 0.9, cex=0.5)+
  geom_vline(xintercept=c(3.5,4.5,6.5), , cex=0.5)

image.png

来个nature配色。

p1 <- p+scale_fill_npg()

image.png


原文中的图形很明显来自Image Browser — PhyloPic这个网站的。有很多元素,根据自己需要选择即可。

image.png

BiocManager::install("rphylopic")
library(tidyverse)
library(rphylopic)

rayurl = "http://phylopic.org/assets/images/submissions/7e282f99-579d-4115-a128-f83af138bfab.512.png"
library(grid)
raylogo1 = readPNG(getURLContent(rayurl), native = T)
im1 <- rasterGrob(raylogo1, interpolate=TRUE)

rayur2 = "http://phylopic.org/assets/images/submissions/1277aa45-6e68-40bb-be98-9fea975e5353.thumb.png"
raylogo2 = readPNG(getURLContent(rayur2), native = T)
im2 <- rasterGrob(raylogo2, interpolate=TRUE)


rayur3 = "http://phylopic.org/assets/images/submissions/8027b226-bb3c-4b6d-a049-0ff58836ab9f.thumb.png"
raylogo3 = readPNG(getURLContent(rayur3), native = T)
im3 <- rasterGrob(raylogo3, interpolate=TRUE)

rayur4 = "http://phylopic.org/assets/images/submissions/820b392c-570d-440c-a75b-570c6a4d4dbd.thumb.png"
raylogo4 = readPNG(getURLContent(rayur4), native = T)
im4 <- rasterGrob(raylogo4, interpolate=TRUE)

添加图形:

p1+
  annotation_custom(im1, xmin=0.5, xmax=1.5, ymin=0.6, ymax=0.9)+
  annotation_custom(im1, xmin=1.5, xmax=2.5, ymin=0.6, ymax=0.9)+
  annotation_custom(im1, xmin=2.5, xmax=3.5, ymin=0.6, ymax=0.9)+
  annotation_custom(im2, xmin=3.5, xmax=4.5, ymin=0.65, ymax=1)+
  annotation_custom(im3, xmin=4.5, xmax=5.5, ymin=0.65, ymax=1)+
  annotation_custom(im3, xmin=5.5, xmax=6.5, ymin=0.65, ymax=1)+
  annotation_custom(im4, xmin=6.5, xmax=7.5, ymin=0.65, ymax=1)+
  annotation_custom(im4, xmin=7.5, xmax=8.5, ymin=0.65, ymax=1)+
  annotate(geom = 'text', label="spinax stenolepis", x=2, y=1)+
  annotate(geom = 'text', label="taurus", x=4, y=1)+
  annotate(geom = 'text', label="obscurus", x=5.5, y=1)+
  annotate(geom = 'text', label="plumbeus", x=7.5, y=1)

image.png

这就完成了,当然还可以自己准备图片,读入之后插入需要的位置即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值