Подтвердить что ты не робот

Наложение двух графиков с использованием ggplot2 в R

У меня есть два графика, и я пытаюсь наложить один поверх другого:

Пример кадра данных "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

Пример кадра данных "avg" выглядит следующим образом. Это среднее значение точек данных для каждого гена во всех образцах. На самом деле этот граф имеет 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)

Я бы хотел наложить avggraph поверх строк. Есть ли способ сделать это? Я попробовал avggraph + linegraphs, но я получаю сообщение об ошибке. Я думаю, это связано с тем, что графики генерируются двумя различными кадрами данных.

Я также должен указать, что оси обоих графиков одинаковы. Оба графика имеют гены на оси X и выражение гена по оси Y.

Любая помощь будет принята с благодарностью!

4b9b3361

Ответ 1

Один из способов - добавить команду geom_line для второго графика в первый график. Вы должны сообщить 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 предназначена для создания строк на основе необработанных данных. enter image description here