2つのグラフがあり、一方を他方の上に重ねようとしています。
データフレーム「ge」の例は次のようになります。実際には、それぞれ200サンプルの10個の遺伝子があるため、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
データフレーム「avg」の例は次のようになります。これは、すべてのサンプルにわたる各遺伝子のデータポイントの平均です。実際には、このグラフには10個の遺伝子があるため、マトリックスは4列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)
2番目のグラフは、すべての遺伝子にわたる各サンプルの線の形で遺伝子発現をグラフ化します。
linegraphs <- ggplot(ge, aes(x=Gene, y=Expression, group=Samples, colour="#000099")) + geom_line() + scale_x_discrete(limits=flevels.tge)
linegraphsの上にavggraphを重ねたいと思います。これを行う方法はありますか? avggraph + linegraphsを試しましたが、エラーが発生しています。これは、グラフが2つの異なるデータフレームによって生成されるためだと思います。
また、両方のグラフの軸が同じであることを指摘する必要があります。両方のグラフのX軸に遺伝子があり、Y軸に遺伝子発現があります。
どんな助けも大歓迎です!
1つの方法は、geom_line
最初のプロットに対する2番目のプロットのコマンド。このgeomは異なるデータセットに基づいていることをggplot
に伝える必要があります。
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
コマンドは、生データに基づいて行を作成するためのものです。
私が見つけた回避策は、2つのプロットをマージする代わりに、データをマージすることでした。 2つのデータフレームの最後に追加の列を追加し、それらに対してrbind
操作を実行しました。fill
またはcolor
の美学を使用して2つのプロットを分離しました。もちろん、私の場合、軸に使用されるスケールは同じでした。