跟着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

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

今天的推文我们复现一下论文中的figure2b 水平堆积柱形图并添加连线

image.png

示例数据如下

image.png

读取数据

library(readxl)
library(tidyverse)
dat<-read_excel("data/20230207/figure2b.xlsx")  
dat

指定因子水平和配色

x_levels<-c("Prolif","EC-art","EC-cap1","EC-cap2",
            "EC-lymph1","EC-lymph2","EC-ven","EC-venule","EC-ang")

fill.colors<-c("#f09004","#e30528","#f5aaad","#ef7b64","#7ec7bd",
               "#63b32f","#527dbf","#8eb1de","#de2080")

堆积柱形图的代码

width<-0.4

dat %>% 
  pivot_longer(!group) %>% 
  mutate(name=factor(name,levels = c("Western","chow"))) %>% 
  mutate(group=factor(group,levels = rev(x_levels))) %>% 
  ggplot(aes(x=value,y=name))+
  geom_bar(aes(fill=group),
           stat="identity",
           position = "fill",
           width = width)+
  scale_fill_manual(values = rev(fill.colors)) -> p1

p1

image.png

计算添加线段的位置坐标

dat[match(x_levels,dat$group),] %>% 
  mutate(x1=cumsum(chow/sum(chow)),
         x2=cumsum(Western/sum(Western))) -> new.df

在p1的基础上添加线段并整体美化

p1+
  geom_segment(data=new.df,
               aes(x=x1,xend=x2,y=2-width/2,yend=1+width/2),
               lty="dashed",
               color="gray",
               size=1)+
  theme_classic()+
  scale_x_continuous(position = "top",
                     expand = expansion(mult=c(0,0)),
                     breaks = seq(0,1,by=0.1),
                     labels=c(0,"",20,"",40,"",60,"",80,"",100))+
  theme(axis.ticks.y = element_blank(),
        panel.grid.major.x = element_line(),
        axis.title = element_blank(),
        plot.title = element_text(hjust=0.5),
        axis.text.y = element_text(face="bold",size=25),
        legend.title = element_blank())+
  labs(title="Percentage of cells per cluster")

image.png

论文中的Figure2d也是同样的图,可以自己试试用上面的代码是否能够做出来

这个整体的配色也挺好看的,可以作为自己论文配色的备选

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

欢迎大家关注我的公众号

小明的数据分析笔记本

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

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

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

image.png

点击三个点,会跳出界面

image.png

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

相关文章
|
2天前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
1天前
|
数据可视化
R语言自定义图形:ggplot2中的主题与标签设置
【8月更文挑战第30天】`ggplot2`作为R语言中功能强大的绘图包,其自定义能力让数据可视化变得更加灵活和多样。通过合理使用`theme()`函数和`labs()`函数,以及`geom_text()`和`geom_label()`等几何对象,我们可以轻松创建出既美观又富有表达力的图形。希望本文的介绍能够帮助你更好地掌握`ggplot2`中的主题与标签设置技巧。
|
4月前
|
存储 数据可视化 数据挖掘
R语言可视化:ggplot2冲积/桑基图sankey分析大学录取情况、泰坦尼克幸存者数据
R语言可视化:ggplot2冲积/桑基图sankey分析大学录取情况、泰坦尼克幸存者数据
|
4月前
R语言因子实验设计nlme拟合非线性混合模型分析有机农业施氮水平
R语言因子实验设计nlme拟合非线性混合模型分析有机农业施氮水平
|
4月前
|
算法 数据可视化
R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
|
4月前
r语言ggplot2误差棒图快速指南
r语言ggplot2误差棒图快速指南
|
4月前
R语言中使用线性模型、回归决策树自动组合特征因子水平
R语言中使用线性模型、回归决策树自动组合特征因子水平
|
4月前
|
数据可视化
R语言ggplot2 对Facebook用户数据可视化分析
R语言ggplot2 对Facebook用户数据可视化分析
|
4月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
4月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为

热门文章

最新文章

下一篇
云函数