SCI图表重现-4

SCI图表重现-4 R语言ggplot2一次性画多个饼状图

今天依旧跟着小明学习复现SCI的图表,今天复现的论文为Whole-genome resequencing of 445 Lactuca accessions reveals the domestication history of cultivated lettuce
在这里插入图片描述
最基本的想法是通过单独画一个饼图,然后进行拼接,但是有一个新遇到的包可以实现这个功能 scattermore可以直接指定输入数据,然后一次性将所有拼图全部画好。

help(package = "scatterpie")

需要的格式如下图所示在这里插入图片描述

x, y指定饼图的位置坐标,接下来就紧跟饼状图每一个部分色数据,哪接下来就模仿这一个数据**
模仿数据的代码**

x <- rep(seq(2,14,2),2)
y <- as.numeric(as.character(gl(4,7,labels = c(2,4,6,8))))
B <- 100-A
A <- sample(1:100,28)
df <- data.frame(x = x, y = y, A= A, B = B, region = as.character(1:28))
df
str(df)
head(df)

画图代码

library(scatterpie)
library(ggplot2)
ggplot() + 
  geom_scatterpie(data = df, aes(x, y, group = region, r = 0.9), cols = c("A", "B")) + 
  coord_equal() + 
  theme_void() + 
  theme(legend.position = "none")+
  scale_fill_manual(values = c("#5b9bd5","#e64b35"))

在这里插入图片描述
接下来添加头部的图例以及左侧的文字
首先先构造数据

df1 <- data.frame(x = seq(1.9,14,2),y = 9.5, label = c("A", "A", "C", "C", "C", "A", "T"))
df2 <- data.frame(x = seq(2.1, 15, 2), y = 9.5, label = c("A", "A", "C", "C", "C", "A", "T"))
df3 <- data.frame(x = 16, y = c(2,4,6,8), label = c("L.sativa(n = 133)", "Non-shattering admixed (n=6)", "Shattering admixed (n=2)", "L.serriola(n=192)"))
ggplot() + 
  geom_scatterpie(data = df, aes(x, y, group = region, r = 0.9), cols = c("A", "B")) + 
  coord_equal() + 
  theme_void() + 
  theme(legend.position = "none")+
  scale_fill_manual(values = c("#5b9bd5","#e64b35"))+
  geom_label(data = df1, aes(x = x-0.1, y = y, label = label),
             fill = "#5b9bd5")+
  geom_label(data = df2, aes(x = x+0.1, y = y, label = label),
             fill = "#e64b35")+
  geom_text(data = df3, aes(x = x, y = y, label = label))

最后得到这一张图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值