Как создать диаграмму рассеяния, показывающую корреляцию между одним геном и несколькими генами? - PullRequest
0 голосов
/ 05 июля 2018

У меня есть матрица с образцами в виде строк и генами в виде столбцов со значениями экспрессии генов (RPKM).

Ниже приведен пример данных. Исходные данные имеют более 800 образцов.

        LINP1   EGFR            RB1       TP53         CDKN2A      MYC
Sample1 0.02   0.038798682  0.1423662   2.778587067 0.471403939 18.93687655
Sample2 0      0.059227225  0.208765213 0.818810739 0.353671882 1.379027685
Sample3 0      0.052116384  0.230437735 2.535040249 0.504061015 9.773089223
Sample4 0.06   0.199264618  0.261100548 2.516963635 0.63659138  11.01441624
Sample5 0      0.123521916  0.273330986 2.751309388 0.623572499 34.0563519
Sample6 0      0.128767634  0.263491811 2.882878373 0.359322715 13.02402045
Sample7 0      0.080097356  0.234511372 3.568192768 0.386217698 9.068928569
Sample8 0      0.017421323  0.247775683 5.109428797 0.068760572 15.7490551
Sample9 0      2.10281137   0.401582013 8.202902242 0.140596724 60.25989178

Чтобы построить точечный график, показывающий корреляцию между двумя генами, я использовал ggscatter

ggscatter(A2, x = "LINP1", y = "EGFR", 
          add = "reg.line", conf.int = FALSE, 
          cor.coef = TRUE, cor.method = "pearson",
          xlab = "LINP1", ylab = "EGFR", xscale="log2", yscale="log2")

Диаграмма рассеяния выглядит следующим образом

scatterplot

И я хочу сделать точечный график, подобный этому

scatterplot

Рис 2g в этой Исследовательской работе . где экспрессия LINP1 показана против всех других генов на одном графике. Это возможно с любым кодом?

1 Ответ

0 голосов
/ 05 июля 2018

Поскольку вы выполняете корреляции Пирсона, результаты такие же, как если бы вы выполнили диаграмму рассеяния и нанесли на график подгоночную линию из регрессионной модели, которая может быть достигнута в ggplot2::geom_smooth() вместе с диаграммой рассеяния по генам.

Edit: Обновлен для использования преобразования log2 () в обоих масштабах согласно комментарию ОП. Обратите внимание, что при выполнении преобразований вы можете иногда получать недопустимые значения. Ваши данные имеют 0 s, поэтому преобразование log2 () возвращает -Inf:

library(tidyr)
library(ggplot2)

df <- read.table(text = "
LINP1   EGFR            RB1       TP53         CDKN2A      MYC
Sample1 0.02   0.038798682  0.1423662   2.778587067 0.471403939 18.93687655
Sample2 0      0.059227225  0.208765213 0.818810739 0.353671882 1.379027685
Sample3 0      0.052116384  0.230437735 2.535040249 0.504061015 9.773089223
Sample4 0.06   0.199264618  0.261100548 2.516963635 0.63659138  11.01441624
Sample5 0      0.123521916  0.273330986 2.751309388 0.623572499 34.0563519
Sample6 0      0.128767634  0.263491811 2.882878373 0.359322715 13.02402045
Sample7 0      0.080097356  0.234511372 3.568192768 0.386217698 9.068928569
Sample8 0      0.017421323  0.247775683 5.109428797 0.068760572 15.7490551
Sample9 0      2.10281137   0.401582013 8.202902242 0.140596724 60.25989178", header = TRUE)



df %>% 
  gather(key = variable, value = values, EGFR:MYC) %>% 
  ggplot(aes(LINP1, values)) + 
  geom_point() + 
  facet_grid(. ~ variable, scales = "free_x") + 
  geom_smooth(method = "lm", se = FALSE) + 
  scale_y_continuous(trans = "log2") + 
  scale_x_continuous(trans = "log2")

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...