mam dwa wykresy i staram się nakładać jeden na drugim:Otaczające dwa wykresy wykorzystujące ggplot2 w R
przykładem ramki danych „ge” wygląda tak. W rzeczywistości istnieje 10 Geny z 200 próbek każdego, więc istnieje 2000 wiersze i 3 kolumny:
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
Przykładem ramki danych „średnio” wygląda tak. Jest to średnia z punktów danych dla każdego genu dla wszystkich próbek. W rzeczywistości jest to wykres 10 genów, więc matryca jest 4col x 10 rzędy:
mean Gene sd se
684.2034 1 102.7142 7.191435
723.2892 2 100.6102 7.044122
Pierwszy wykres wykresy linii średniej ekspresji każdego genu, oraz odchylenia standardowe dla każdego punktu danych.
avggraph <- ggplot(avg, aes(x=Gene, y=mean)) + geom_point() +geom_line() + geom_errorbar(aes(ymin=mean-sd, ymax=mean+sd), width=.1)
Drugi wykres przedstawia ekspresję genów w postaci linii dla każdej próbki we wszystkich genach.
linegraphs <- ggplot(ge, aes(x=Gene, y=Expression, group=Samples, colour="#000099")) + geom_line() + scale_x_discrete(limits=flevels.tge)
chciałbym nałożyć avggraph na szczycie linegraphs. Czy jest jakiś sposób na zrobienie tego? Próbowałem avggraph + linegraphs ale dostaję błąd. Myślę, że dzieje się tak dlatego, że wykresy są generowane przez dwie różne ramki danych.
Chciałbym również zwrócić uwagę, że osie obu wykresów są takie same. Oba wykresy mają geny na osi X i ekspresję genu na osi Y.
Każda pomoc będzie bardzo ceniona!
Dzięki @Sven. Działa to jednak, gdy to robię, średnia linia (na czarno) znajduje się za różowymi liniami. A ponieważ w moich danych jest tyle różowych linii, nie widać czarnej. Wszelkie sugestie, jak je przerzucić? – Sheila
@ShilaP Wystarczy zmienić kolejność geomów: 'ggplot() + geom_line (dane = ge, aes (x = Gene, y = Exp, grupa = Sample, color =" # 000099 "), show_guide = FALSE) + geom_line (dane = średnia, aes (x = Gene, y = średnia)) + geom_errorbar (dane = średnia, aes (x = Gene, ymin = średnia-sd, ymax = średnia + sd), szerokość = .1) + geom_point (dane = średnia, aes (x = Gene, y = średnia)) ' –
Gotowy! Tak, pomyślałem, że będzie to wymagało przerzucenia kodu dla geom_line() w jakiś sposób, ale nie udało mi się go dokładnie rozgryźć. Dzięki za pomoc! – Sheila