R:融化资料框并按群组作图

时间:2019-03-20 04:52:29

标签: r ggplot2 melt

我有一个很大的数据集,我想用它来绘制沿着染色体的遗传差异。我正在使用的数据帧具有以下格式。

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 个答案:

答案 0 :(得分:1)

我们可以将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))

答案 1 :(得分:1)

我认为,如果您按“组”和“应变”上的方面进行着色,这将是最好的选择。假设数据框名为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

答案 2 :(得分:0)

akrun的答案几乎存在,只是每种菌株应画一条线。有关更多信息,这是指向我正在研究的S​​HINY应用程序的屏幕截图(对不起,需要更多代表才能发布实际图像)的链接,该图绘制了选定的真菌菌株与其他感染不同宿主的菌株之间的染色体相似性草种。 Shiny App plot 目前的图表显示,在87-120株菌株中,与10株水稻(Oryza)感染菌株(红色),7株圣奥古斯丁草(Stenotaphrum)感染菌株(深蓝色)和8指粟(Eleusine)绘制的遗传差异-感染菌株(浅蓝色)。我当前的问题是,x轴值不代表染色体位置(而是分析窗口号),我需要以一种可以使用染色体中的染色体位置信息的方式来融合(或收集)数据框字段。 x轴的标题和颜色的组信息。