R: плавление фрейма данных и построение графиков по группам - PullRequest
1 голос
/ 20 марта 2019

У меня есть большой набор данных, который я хотел бы использовать для построения генетической дивергенции вдоль хромосом.Используемый фрейм данных имеет следующий формат.

ID      Group   100     270     310     430     460     550     580     660     710     740
Strain1 A       0.191   0.147   0.124   0.149   0.193   0.189   0.123   0.189   0.151   0.180
Strain2 A       0.188   0.188   0.149   0.136   0.000   0.199   0.199   0.188   0.149   0.000
Strain3 B       0.123   0.147   0.190   0.061   0.148   0.149   0.148   0.197   0.178   0.172
Strain4 B       0.147   0.197   0.188   0.178   0.179   0.149   0.191   0.154   0.179   0.187

Я хотел бы использовать ggplot2 для построения линии для каждого штамма, с линиями, раскрашенными в соответствии с групповой принадлежностью, и с непрерывной осью X, проходящей от позиций хромосом от 100 до 740. Я не могу понятьКак расплавить данные, не извлекая сначала информацию о группе, а затем добавляя ее обратно после расплавления.Кто-нибудь может предложить одношаговый подход для достижения этой цели?

Ответы [ 3 ]

1 голос
/ 20 марта 2019

Я думаю, что это будет работать лучше, если вы раскрасите по группам и фасетите по деформации. Предполагая, что датафрейм имеет имя mydata:

library(tidyr)
library(ggplot2)

mydata %>% 
  gather(Var, Val, -Group, -ID) %>% 
  ggplot(aes(Var, Val)) + 
  geom_line(aes(color = Group, group = Group)) + 
  facet_grid(ID ~ .)

enter image description here

1 голос
/ 20 марта 2019

Мы могли бы gather в «длинный» формат и затем построить график с помощью ggplot

library(ggplot2)
library(dplyr)
library(tidyr)
gather(df1, key, val, 3:ncol(df1)) %>% 
   mutate(key = as.numeric(key)) %>%
   ggplot() + 
     geom_line(aes(x = key, y = val, group = Group, color = Group))
0 голосов
/ 21 марта 2019

Ответ от akrun почти там, за исключением того, что для каждого штамма должна быть нанесена одна линия.Для получения дополнительной информации, вот ссылка на снимок экрана (извините, мне нужно больше повторов для публикации фактического изображения) приложения SHINY, над которым я работаю, которое отображает хромосомное сходство между выбранным штаммом гриба и коллекцией других штаммов, которые заражают различных хозяеввиды трав. Блестящий график приложения Текущий график показывает генетическое расхождение между штаммом 87-120, нанесенным на график против 10 штаммов, заражающих рис (Oryza) (окрашены в красный цвет), 7 штаммов, заражающих St. Augustinegrass (Stenotaphrum) (темно-синий)) и 8-ми пальцевые просо (элевсин) штаммы (светло-голубой).Моя текущая проблема заключается в том, что значения оси X не представляют положения хромосом (вместо этого это номер окна анализа), и мне нужно растопить (или собрать) поля фрейма данных таким образом, чтобы я мог использовать информацию о положении хромосом, которая находится взаголовки для оси x и информация о группе для цвета.

...