r - ggplot配对seq

时间:2016-09-20 10:22:38

标签: r plot ggplot2 dplyr

我无法使用paired绘制ggplot2数据。

所以,我有一个配对(idpair)个体(id)及其各自序列的数据库,例如

   idpair id 1 2 3 4 5 6 7 8 9 10
1       1  1 d b d a c a d d a  b
2       1  2 e d a c c d a b a  c
3       2  3 e a a a a c d b c  e
4       2  4 d d b c d e a a a  b 
...

我想要的是绘制所有序列,但在某种程度上我们可以在视觉上区分这对序列。

我想过使用网格,例如:facet_grid(idpair~.)。我的问题看起来像这样:

enter image description here

如何将两个序列并排绘制,消除由另一个idpair引起的“真空”?

非常欢迎任何关于配对数据的替代绘图的建议。

我的代码

library(ggplot2) 
library(dplyr) 
library(reshape2) 

dtmelt = dt %>% melt(id.vars = c('idpair', 'id')) %>% arrange(idpair, id, variable)

dtmelt %>% ggplot(aes(y = id, x = variable, fill = value)) + 
  geom_tile() + scale_fill_brewer(palette = 'Set3') + 
  facet_grid(idpair~.) + theme(legend.position = "none") 

生成数据

dt = as.data.frame( cbind( sort( rep(1:10, 2) ) , 1:20, replicate(10, sample(letters[1:5], 20, replace = T)) ) ) 
colnames(dt) = c('idpair', 'id', 1:10)

1 个答案:

答案 0 :(得分:2)

您可以通过设置scales = "free_y"来删除构面中未使用的级别。这将改变每个方面的y轴限制。

dtmelt %>% ggplot(aes(y = id, x = variable, fill = value)) + 
    geom_tile() + scale_fill_brewer(palette = 'Set3') + 
    facet_grid(idpair~., scales = "free_y") + theme(legend.position = "none") 

enter image description here