R:熔化数据框并按组绘制

问题描述 投票:1回答:3

我有一个大型数据集,我想用它来绘制染色体上的遗传分歧。我使用的数据框格式如下。

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为每个菌株绘制一条线,根据群组关系绘制线条,并从染色体位置100到740运行连续的x轴。我无法弄清楚如何在不提取数据的情况下融化数据首先分组信息,然后在融化后将其添加回来。任何人都可以建议一步到位的方法来实现这一目标吗?

r ggplot2 melt
3个回答
1
投票

我们可以将gather变成'long'格式然后用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
投票

我认为如果你按照Group的颜色和Strain的方面进行着色,这将是最好的。假设数据帧名为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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.