R语言 未显示通量的冲积地块

b5lpy0ml  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(153)

我想创建一个冲积图,显示两个条件之间的细胞通量。我使用的是来自元数据seurat对象的数据。
我的数据:

meta= data.frame(cell= rownames(seurat@meta.data), geno= seurat$genotype, cluster= seurat$seurat_cluster, num= 1:length(rownames(seurat@meta.data)))

head(meta)
                                                   cell  geno cluster num
KO_d8_r1_AAACAGCCAACCCTAA-1 KO_d8_r1_AAACAGCCAACCCTAA-1 KO_d8       6   1
KO_d8_r1_AAACAGCCAGGAACAT-1 KO_d8_r1_AAACAGCCAGGAACAT-1 KO_d8       1   2
KO_d8_r1_AAACAGCCATGTTGCA-1 KO_d8_r1_AAACAGCCATGTTGCA-1 KO_d8       1   3
KO_d8_r1_AAACATGCATAGCGGA-1 KO_d8_r1_AAACATGCATAGCGGA-1 KO_d8       1   4
KO_d8_r1_AAACCAACATGGCCTG-1 KO_d8_r1_AAACCAACATGGCCTG-1 KO_d8       3   5
KO_d8_r1_AAACCGAAGGGCTTAT-1 KO_d8_r1_AAACCGAAGGGCTTAT-1 KO_d8       5   6
 
tail(meta)
                                                       cell  geno cluster  num
    WT_d8_r2_TTTGTCCCAATCCCTT-1 WT_d8_r2_TTTGTCCCAATCCCTT-1 WT_d8       4 6598
    WT_d8_r2_TTTGTCTAGGATCACT-1 WT_d8_r2_TTTGTCTAGGATCACT-1 WT_d8       5 6599
    WT_d8_r2_TTTGTGAAGTTAGAGG-1 WT_d8_r2_TTTGTGAAGTTAGAGG-1 WT_d8       1 6600
    WT_d8_r2_TTTGTGGCACAACCTA-1 WT_d8_r2_TTTGTGGCACAACCTA-1 WT_d8       6 6601
    WT_d8_r2_TTTGTGTTCCTTGAGG-1 WT_d8_r2_TTTGTGTTCCTTGAGG-1 WT_d8       0 6602
    WT_d8_r2_TTTGTTGGTAGCCTAA-1 WT_d8_r2_TTTGTTGGTAGCCTAA-1 WT_d8       4 6603

我的代码:

ggplot(meta,
       aes(x = geno, stratum = cluster, alluvium = num, y = cluster,
           fill = num, label = cluster)) +
  scale_x_discrete(expand = c(.1, 0)) +
  geom_flow(width = 1/4) +
  geom_stratum(alpha = .5, width = 1/4) +
  geom_text(stat = "stratum", size = 4) +
  theme(legend.position = "none") +
  ggtitle("flux of cells")

我的输出:

但是冲积层,如你所见,没有显示细胞的流动,有什么建议吗?

kxkpmulp

kxkpmulp1#

简介

我认为您所面临的问题更多的是如何定义alluvium参数。该参数应该与右地层和左地层之间的信息流有关。因此,它应该为您的数据的每一行定义冲积层类别。例如,一类是冲积层(流)在“KO_d8”中的群集0和“WT_d8”中的群集1之间。此处num列似乎(用于定义冲积层)不代表冲积层。
在所表示的数据中,我看不出两个地层之间的联系是什么,也就是说,是什么将线条(或细胞;)属于“KO_d8”基因型,其余为“WT_d8”基因型。
知道了这一点,只能有两种情况:
1.“KO_d8”中的单元格与“WT_d8”中的单元格之间确实存在链接
1.“KO_d8”中的单元格与“WT_d8”中的单元格之间没有链接

案例编号1:

在这种情况下,你必须找到定义两个类别中单元格之间链接的列,然后,你可以按照ggalluvial小插图(链接)中的描述复制长形冲积层。

案例编号2:

在这种情况下,我想您只需要可视化聚类的内部比例在两种分层条件下如何变化。
在这里,冲积层仅将地层“KO_d8”中的第x个聚类与地层“WT_d8”中的第x个聚类连接起来,而x的取值范围为0 ~ 13
为此,您需要以正确的格式处理数据。

# Load library for data transformation
library(dplyr)

# Count the number of cells per `geno`
geno.smry <- table(meta$geno)

# Get the number of cells per `cluster` and per `geno`
meta.2.plot <- meta %>% 
  dplyr::group_by(cluster, geno) %>%
  dplyr::summarise(n_cells = n())

# Get the fraction of cells per `cluster` for each `geno`
meta.2.plot$n_cells_tot_per_geno <- as.numeric(geno.smry[meta.2.plot$geno])
meta.2.plot$fraction_cells <- meta.2.plot$n_cells / meta.2.plot$n_cells_per_geno

因此,您可以将冲积层绘制为:

# Plot the alluvial
ggplot(meta.2.plot,
       aes(x = geno, y = fraction_cells,
           stratum = cluster, alluvium = cluster,
           fill = cluster, label = cluster)) +
  scale_x_discrete(expand = c(.1, 0)) +
  geom_flow(width = 1/4) +
  geom_stratum(alpha = .5, width = 1/4) +
  geom_text(stat = "stratum", size = 4) +
  theme(legend.position = "none") +
  ggtitle("flux of cells")

相关问题