Перейдите через eset, чтобы создать несколько графиков с различными группами сравнения в R - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть eset с этой структурой (верхний набор - pData (данные), нижний - exprs (данные)). Метки SMP представляют собой образцы от субъектов с различными условиями. Цвета - это модули из WGCNA с соответствующими оценками.

      ID   age  gender  condition
SMP1  20   15    F      healthy
SMP2  35   39    F      healthy
SMP3  36   54    F      diabetes
SMP4  73   43    M      diabetes
SMP5  29   17    M      influenza
SMP6  66   27    F      influenza

        SMP1   SMP2    SMP3   SMP4   SMP5   SMP6
blue    0.98  -0.42    0.21  -0.96  -0.92   0.44
black   0.43   0.88    0.23   0.59   0.32  -0.82
red     0.59   0.21   -0.16  -0.77  -0.49   0.33

На самом деле существует 12 групп болезней и одна здоровая группа, а также 9 различных модулей (каждый разного цвета)

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

Первоначально я слил pData (данные) и выражения (данные) из набора в один фрейм данных, вручную поместил поднабор фрейма данных для каждого сравнения заболевание / здоровье, а затем составил графики, используя следующий код:

ggplot(condition_v_healthy, aes(module_color, fill=condition)) + 
geom_density(alpha = 0.5) + theme(legend.position="none") + 
labs(x = "condition")

Похоже, что для этого требуется циклически проходить как по цветам модуля, так и по различным условиям, каждый раз сравнивая группу заболеваний со здоровыми.

Мне интересно, есть ли элегантный способ сделать это? Можно ли использовать purrr с пользовательской функцией? Я хотел бы избежать слияния pData (данных) и exprs (данных), но не уверен, возможно ли это.

Спасибо!

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