跟着Nature Metabolism学作图:R语言ggplot2一次性展示很多个饼图

简介: 跟着Nature Metabolism学作图:R语言ggplot2一次性展示很多个饼图

论文

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

相关文章
|
3月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
3月前
|
数据可视化
R语言自定义图形:ggplot2中的主题与标签设置
【8月更文挑战第30天】`ggplot2`作为R语言中功能强大的绘图包,其自定义能力让数据可视化变得更加灵活和多样。通过合理使用`theme()`函数和`labs()`函数,以及`geom_text()`和`geom_label()`等几何对象,我们可以轻松创建出既美观又富有表达力的图形。希望本文的介绍能够帮助你更好地掌握`ggplot2`中的主题与标签设置技巧。
|
6月前
|
存储 数据可视化 数据挖掘
R语言可视化:ggplot2冲积/桑基图sankey分析大学录取情况、泰坦尼克幸存者数据
R语言可视化:ggplot2冲积/桑基图sankey分析大学录取情况、泰坦尼克幸存者数据
|
6月前
|
算法 数据可视化
R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
|
6月前
r语言ggplot2误差棒图快速指南
r语言ggplot2误差棒图快速指南
|
6月前
|
数据可视化
R语言ggplot2 对Facebook用户数据可视化分析
R语言ggplot2 对Facebook用户数据可视化分析
|
编解码 数据可视化 数据挖掘
R语言之 ggplot 2 和其他图形
R语言之 ggplot 2 和其他图形
96 0
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
19天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
40 3
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化

热门文章

最新文章