R 使用ggplot2将两个基因计数合并到一个图中?

R 使用ggplot2将两个基因计数合并到一个图中?,r,plot,ggplot2,R,Plot,Ggplot2,在同一图表中沿两种不同条件显示两个基因计数。使用plotcounts函数从Deseq2获得这些基因的标准化计数。以相同的x轴在同一个图中绘制这两个基因,x轴有三个条件Ctrl、T1、T2和不同的y轴(基于计数)。另外一个变量是复制体PAT1,2,3,4,5,我想用不同的形状和两种不同颜色的基因“x”和“y”来区分它。我从上面提到的链接中尝试了类似的方法,但到目前为止还没有真正起作用 geneX 到目前为止,我使用这段代码生成单独的GGPlot #ggplot(genecounts, aes(x

在同一图表中沿两种不同条件显示两个基因计数。使用plotcounts函数从Deseq2获得这些基因的标准化计数。以相同的x轴在同一个图中绘制这两个基因,x轴有三个条件Ctrl、T1、T2和不同的y轴(基于计数)。另外一个变量是复制体PAT1,2,3,4,5,我想用不同的形状和两种不同颜色的基因“x”和“y”来区分它。我从上面提到的链接中尝试了类似的方法,但到目前为止还没有真正起作用
geneX

到目前为止,我使用这段代码生成单独的GGPlot

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

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

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

你可以从
geom_point
开始:我会对患者使用颜色,对基因使用形状。您将需要使用对数刻度,因为计数的数量级不同。假设您的数据帧命名为
geneX
geneY

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()

我没有在您的示例数据中看到基因“x”和“y”?我已经用这两个基因的数据更新了问题
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()
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()