使用R绘制单细胞 细胞比例堆叠柱状图加面积连线(桑基图)

38 篇文章 7 订阅
12 篇文章 0 订阅
使用R绘制单细胞 细胞比例堆叠柱状图加面积连线(桑基图)
library(Seurat)
library(ggplot2)
library(dplyr)
library(ggalluvial)
#构建数据
Ratio <- sce.integrated@meta.data %>%
  group_by(orig.ident, cell_annotation) %>% # 分组
  summarise(n=n()) %>%
  mutate(relative_freq = n/sum(n))


#堆叠柱状图
mycolor = c('#efb306',
            '#7db954',
            '#852f88',
            '#4e54ac',
            '#0f8096',
            'pink',
            'green')

ggplot(Ratio, aes(x =orig.ident, y= relative_freq, fill = cell_annotation,
                  stratum=cell_annotation, alluvium=cell_annotation)) +
  geom_col(width = 0.5, color='black')+
  geom_flow(width=0.5,alpha=0.4, knot.pos=0.5)+ # 参数knot.pos设置为0.5使连接为曲线面积,就像常见的桑基图
  theme_classic() +
  labs(x='Sample',y = 'Ratio')+
  coord_flip()+
  scale_fill_manual(values = mycolor)

最终成图如下(我这里是真是项目数据做了部分信息涂抹处理):
在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
桑基图(Sankey diagram)是一种流程,用于表示流量、能量、材料等资源在系统内部的转移。在R语言中,可以使用包ggplot2和ggalluvial来创建桑基图。 首先,我们需要安装并载这两个包: ```r install.packages("ggplot2") install.packages("ggalluvial") library(ggplot2) library(ggalluvial) ``` 然后,我们可以使用以下代码创建一个简单的桑基图: ```r data <- data.frame(from = c("A", "A", "B", "B", "C"), to = c("B", "C", "C", "D", "D"), value = c(10, 20, 30, 40, 50)) ggplot(data, aes(axis1 = from, axis2 = to, y = value)) + geom_alluvium(aes(fill = from), width = 0.1) + geom_stratum(width = 1/8, fill = "grey", color = "black") + theme_void() ``` 这将创建一个包含三个节点的桑基图,其中节点A、B和C之间的流量表示为从A到B、从A到C、从B到C、从B到D和从C到D的线。 我们还可以自定义桑基图的颜色、标签和样式。例如,以下代码创建一个包含四个节点的桑基图,其中节点A、B、C和D之间的流量表示为从A到B、从A到C、从B到C、从B到D、从C到D和从C到A的线: ```r data <- data.frame(from = c("A", "A", "B", "B", "C", "C"), to = c("B", "C", "C", "D", "D", "A"), value = c(10, 20, 30, 40, 50, 60)) ggplot(data, aes(axis1 = from, axis2 = to, y = value)) + geom_alluvium(aes(fill = from), width = 0.1) + geom_stratum(width = 1/8, fill = "grey", color = "black") + scale_fill_manual(values = c("#E69F00", "#56B4E9", "#009E73", "#F0E442")) + ggtitle("Customized Sankey Diagram") + theme_void() + theme(plot.title = element_text(hjust = 0.5, size = 20, face = "bold"), axis.text.y = element_text(size = 16), axis.text.x = element_text(size = 16), axis.title = element_blank()) ``` 此代码将节点A、B、C和D分别着色为橙色、蓝色、绿色和黄色,并添了标题和自定义字体大小和样式。 总之,R语言中的ggplot2和ggalluvial包提供了创建自定义桑基图的灵活和简单的方法,可以用于可视化各种类型的数据流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值