使用ggplot2在一个单独的图中组合两个基因计数?

时间:2017-06-13 11:36:36

标签: r plot ggplot2

在两个不同条件下在同一图表中显示两个基因计数。使用绘图计数函数从Deseq2获得这些基因的标准化计数。在具有相同x轴的相同图中绘制这两个基因,其具有三个条件Ctrl,T1,T2和不同的y轴(基于计数)。另外一个变量是重复的PAT1,2,3,4,5,我希望通过不同的形状和基因来区分它们#34; x"和" y"有两种不同的颜色。我从提到的链接尝试了类似的东西,到目前为止没有真正起作用 GENEX

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)

任何帮助/建议都将受到高度赞赏

1 个答案:

答案 0 :(得分:2)

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

你可以从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()

enter image description here

您可以尝试使用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()

enter image description here