热点新闻
跟着Nature Metabolism学作图:R语言ggplot2一次性展示很多个饼图
2023-07-09 16:39  浏览:357  搜索引擎搜索“富博农业网”
温馨提示:信息一旦丢失不一定找得到,请务必收藏信息以备急用!本站所有信息均是注册会员发布如遇到侵权请联系文章中的联系方式或客服删除!
联系我时,请说明是在富博农业网看到的信息,谢谢。
展会发布 展会网站大全 报名观展合作 软文发布

论文

Single-cell profiling of vascular endothelial cells reveals progressive organ-specific vulnerabilities during obesity

https://www.nature.com/articles/s42255-022-00674-x#Sec58

s42255-022-00674-x.pdf

https://github.com/Osynchronika/sc_EC_obesity_atlas

大部分 作图的数据都有,可以试着用论文中提供的数据复现一下论文中的图

今天的推文我们复现一下论文中的figure4f




image.png

之前的推文也介绍过这种形式的饼图,可以也看看之前的推文

今天的这个图上下两层分开做,然后采用拼图的方式实现

饼图上展示比例的文本如何添加的精确的位置我暂时想不到比较好的方法了,推文里的解决办法是构造大体的坐标,然后出图后手动调节

论文中提供的数据




image.png

第一层饼图的数据整理成如下格式




image.png

作图代码

library(ggplot2) library(scatterpie) library(readxl) library(tidyverse) fig4f.df01<-read_excel("data/20230207/figure4f.xlsx", sheet = "Sheet1") fig4f.df01 ggplot()+ geom_scatterpie(data=fig4f.df01, aes(x,y,group=region,r=0.4), cols = c("A","B"))+ coord_equal() fig4f.df01 fig4f.df01 %>% rowwise() %>% mutate(A_prop=paste0(round(A/(A+B),2)*100,"%"), B_prop=paste0(round(B/(A+B),2)*100,"%"), x_A=x+0.1, x_B=x-0.1, y_A=y,y_B=y) -> fig4f.df01.1 ggplot()+ geom_scatterpie(data=fig4f.df01.1, aes(x,y,group=region,r=0.4), cols = c("A","B"))+ coord_equal()+ geom_text(data=fig4f.df01.1, aes(x=x_A,y=y_A,label=A_prop), hjust=0,color="black")+ geom_text(data=fig4f.df01.1, aes(x=x_B,y=y_B,label=B_prop), hjust=1,color="white")+ theme_void()+ theme(axis.title.y = element_text(angle = 90), legend.title = element_blank())+ scale_fill_manual(values = c("A"="#89bd41","B"="#e20613"), labels=c("A"="Obesity: up\nRev: restored", "B"="Obesity: up\nRev: not restored"))+ labs(y="Upregulated")+ geom_text(data = data.frame(x=1:7,y=1.5,label=c("Brain","Heart","Lungs", "Kidneys","Liver","Vis AT","Sc AT")), aes(x=x,y=y,label=label), fontface="bold")


image.png

第二层的思路是一样的

作图数据手动整理成如下格式




image.png

作图代码

fig4f.df02<-read_excel("data/20230207/figure4f.xlsx", sheet = "Sheet2") fig4f.df02 fig4f.df02 fig4f.df02 %>% rowwise() %>% mutate(A_prop=paste0(round(A/(A+B),2)*100,"%"), B_prop=paste0(round(B/(A+B),2)*100,"%"), x_A=x+0.1, x_B=x-0.1, y_A=y,y_B=y) -> fig4f.df02.1 ggplot()+ geom_scatterpie(data=fig4f.df02.1, aes(x,y,group=region,r=0.4), cols = c("A","B"))+ coord_equal()+ geom_text(data=fig4f.df02.1, aes(x=x_A,y=y_A,label=A_prop), hjust=0,color="white")+ geom_text(data=fig4f.df02.1, aes(x=x_B,y=y_B,label=B_prop), hjust=1,color="black")+ theme_void()+ theme(axis.title.y = element_text(angle = 90), legend.title = element_blank())+ scale_fill_manual(values = c("A"="#312782","B"="#8abe42"), labels=c("A"="Obesity: down\nRev: restored", "B"="Obesity: down\nRev: not restored"))+ labs(y="Downregulated")


image.png

最后是拼图

library(patchwork) p1/p2

出图后再手动编辑文本的位置




image.png

示例数据和代码可以给推文点赞,然后点击在看,最后留言获取

欢迎大家关注我的公众号

小明的数据分析笔记本

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

微信公众号好像又有改动,如果没有将这个公众号设为星标的话,会经常错过公众号的推文,个人建议将 小明的数据分析笔记本 公众号添加星标,添加方法是

点开公众号的页面,右上角有三个点




image.png

点击三个点,会跳出界面




image.png

直接点击 设为星标 就可以了




image.png

发布人:a896****    IP:120.230.68.***     举报/删稿
展会推荐
让朕来说2句
评论
收藏
点赞
转发