覆盖中的R用GGPLOT2两个图(Overlaying two graphs using ggplo

2019-07-04 01:12发布

我有两个图形和我试图覆盖一个在另一个之上:

数据帧“GE”的一个例子是这样的。 实际上有10个基因与每个200个样品,所以有2000行和3列:

Exp    Gene    Sample
903.0   1       1
1060.0  1       2
786.0   1       3
736.0   1       4
649.0   2       1
657.0   2       2
733.5   2       3
774.0   2       4

数据帧“平均”的一个例子是这样的。 这是在所有样品中每个基因的平均数据点。 实际上这个曲线图具有10个基因,因此,基质是4col X 10行:

mean       Gene   sd         se
684.2034    1   102.7142    7.191435
723.2892    2   100.6102    7.044122

第一曲线的曲线图的线的平均表达为每个基因与每个数据点的标准偏差一起。

avggraph <- ggplot(avg, aes(x=Gene, y=mean)) + geom_point() +geom_line() + geom_errorbar(aes(ymin=mean-sd, ymax=mean+sd), width=.1)

第二曲线图表的基因表达的形式用于跨所有基因每个样品的线。

linegraphs <- ggplot(ge, aes(x=Gene, y=Expression, group=Samples, colour="#000099")) + geom_line() + scale_x_discrete(limits=flevels.tge)

我想叠加avggraphlinegraphs的顶部。 有没有办法做到这一点? 我试过avggraph + linegraphs但我发现了一个错误。 我想,这是因为图是由两个不同的数据帧生成。

我还要指出的是,这两个图的轴是相同的。 两个曲线图对X轴和所述Y轴的基因表达的基因。

任何帮助将不胜感激!

Answer 1:

一种方法是添加geom_line第二阴谋第一曲线命令。 你需要告诉ggplot这GEOM是基于不同的数据集:

ggplot(avg, aes(x=Gene, y=mean)) + 
  geom_point() + 
  geom_line() + 
  geom_errorbar(aes(ymin=mean-sd, ymax=mean+sd), width=.1) +
  geom_line(data = ge, aes(x=Gene, y=Exp, group=Sample, colour="#000099"),
            show_guide = FALSE)

最后geom_line命令是一个用于创建基于原始数据线。



Answer 2:

这是我发现的解决方法是,而不是合并这两个地块,我合并的数据。 我在两个dataframes结束时加入额外的列,然后进行rbind使用任一上them.The操作fillcolor美学到两个地块分开。 在我的情况下,当然用于轴的刻度均是相同的。



文章来源: Overlaying two graphs using ggplot2 in R
标签: r graph ggplot2