前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着Nature Genetics 学画图:R语言ggplot2一次性画好多个饼状图

跟着Nature Genetics 学画图:R语言ggplot2一次性画好多个饼状图

作者头像
用户7010445
发布2021-05-07 10:55:23
2.2K0
发布2021-05-07 10:55:23
举报
文章被收录于专栏:小明的数据分析笔记本

今天推文重复的图来自于 论文 Whole-genome resequencing of 445 Lactuca accessions reveals the domestication history of cultivated lettuce

image.png

今天试着重复的图片对应着的是论文附件中的Figure8b,很多个饼状图放到一起

image.png

最基本的想法就是单独画好多个饼状图,然后通过拼图实现,但是因为之前重复地图的时候新遇到了一个包是 scattermore可以直接指定输入数据,然后一次性将所有饼状图画好,这样就省去了拼图的步骤

通过 help(package="scatterpie")函数查看帮助文档,得知需要准备的数据格式如下

image.png

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

模仿数据的代码
代码语言:javascript
复制
x<-rep(seq(2,14,2),4)
y<-as.numeric(as.character(gl(4,7,labels = c(2,4,6,8))))
A<-sample(1:100,28)
B<-100-A
df<-data.frame(x=x,
               y=y,
               A=A,
               B=B,
               region=as.character(1:28))
df
str(df)
head(df)
画图代码
代码语言:javascript
复制
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"))

结果如下

image.png

接下来是添加头部的图例和右侧的文字

首先是构造数据的代码
代码语言:javascript
复制
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("AAAAA","BBBBBB","CCCCCCC","DDDDDD")
)
画图代码
代码语言:javascript
复制
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))

image.png

模仿的还差不多

这里遇到一个问题是:ggplot2添加文本的时候默认是以坐标轴的位置居中分布的,有没有办法让文本以坐标的位置居左或者居右来呢?暂时还不知道如何设置

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 接下来是添加头部的图例和右侧的文字
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档