【问题标题】:Combining two gene counts in one single plot using ggplot2?使用ggplot2将两个基因计数组合在一个图中?
【发布时间】:2017-06-13 11:36:35
【问题描述】:

在同一图表中显示两个不同条件下的两个基因计数。这些基因的归一化计数是使用 plotcounts 函数从 Deseq2 获得的。将这两个基因绘制在具有相同 x 轴的同一图中,其中具有三个条件 Ctrl、T1、T2 和不同的 y 轴(基于计数)。还有一个额外的变量是重复 PAT1,2,3,4,5,我想通过不同的形状和基因“x”和“y”用两种不同的颜色来区分它们。我从提到的链接中尝试了类似的方法,但到目前为止并没有真正奏效
基因X

genecounts <- plotCounts(dds, gene = paste(geneX), 
              intgroup = c("timepoint","patient"),returnData = TRUE)  


#               count timepoint patient  
# PAT1.ctrl 19.975535      ctrl    PAT1  
# PAT2.ctrl 15.095701      ctrl    PAT2  
# PAT3.ctrl 31.067328      ctrl    PAT3  
# PAT4.ctrl 23.507453      ctrl    PAT4  
# PAT5.ctrl 64.955803      ctrl    PAT5  
# PAT1.T1   25.087863        T1    PAT1  
# PAT2.T1   12.265661        T1    PAT2  
# PAT3.T1   21.514517        T1    PAT3  
# PAT4.T1   12.853989        T1    PAT4  
# PAT5.T1   29.887820        T1    PAT5  
# PAT1.T2   16.234911        T2    PAT1  
# PAT2.T2    7.620990        T2    PAT2  
# PAT3.T2   36.834481        T2    PAT3  
# PAT4.T2    7.085464        T2    PAT4  
# PAT5.T2   13.330165        T2    PAT5  

第二个基因 Y 图计数

#            count  timepoint patient
PAT1.ctrl 156949.94      ctrl    PAT1
PAT2.ctrl 164856.70      ctrl    PAT2
PAT3.ctrl 258139.79      ctrl    PAT3
PAT4.ctrl 103669.21      ctrl    PAT4
PAT5.ctrl 434170.02      ctrl    PAT5
PAT1.T1   128839.83        T1    PAT1
PAT2.T1    98877.64        T1    PAT2
PAT3.T1   198419.57        T1    PAT3
PAT4.T1    97918.21        T1    PAT4
PAT5.T1   306861.69        T1    PAT5
PAT1.T2   124161.91        T2    PAT1
PAT2.T2    92150.86        T2    PAT2
PAT3.T2   265243.35        T2    PAT3
PAT4.T2    90364.91        T2    PAT4
PAT5.T2   399177.04        T2    PAT5

到目前为止,我使用此代码生成单独的 ggplots

#ggplot(genecounts, aes(x = timepoint, y = count, color = patient)) + geom_beeswarm(cex =3)

任何帮助/建议将不胜感激

【问题讨论】:

  • 我在您的示例数据中没有看到基因“x”和“y”?
  • 我已经用两个基因的数据更新了问题

标签: r plot ggplot2


【解决方案1】:

第一步是为每个数据框添加一列基因名称,然后将它们组合起来。

您可以从geom_point 开始:我会为患者使用颜色,为基因使用形状。您将需要使用对数刻度,因为计数相差几个数量级。假设您的数据框被命名为geneXgeneY

library(dplyr)
library(ggplot2)

geneX %>% 
mutate(gene = "X") %>% 
bind_rows(mutate(geneY, gene = "Y")) %>% 
ggplot(aes(timepoint, count)) + 
  geom_point(aes(color = patient, shape = gene)) + 
  scale_y_log10()

您可以尝试geom-jitter 来避免点重叠。

如果要连接点,则需要同时按基因和患者分组,这需要更多工作:

geneX %>% 
mutate(gene = "X") %>% 
bind_rows(mutate(geneY, gene = "Y")) %>% 
ggplot(aes(timepoint, count)) + 
  geom_line(aes(color = patient, group = interaction(patient, gene))) + 
  geom_point(aes(color = patient, shape = gene)) + 
  scale_y_log10()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多