创建包含三列的过渡图

时间:2016-04-11 21:13:20

标签: r plot

我的数据由多个类(在本例中为三个类)的测试对象组成,但类别因三个时间点而异:基因型,早期表型和晚期表型阶段。

以下是示例数据:

genotype<-cbind(c(rep("A",100),rep("B",100),rep("C",100)))
early_phenotype<-cbind(c(rep("A",75),rep("B",75),rep("C",75),rep("A",75)))
late_phenotype<-cbind(c(rep("A",50),rep("B",100),rep("C",100),rep("A",50)))
df<-cbind(genotype,early_phenotype,late_phenotype)
df<-as.data.frame(df)
colnames(df)<-c("genotype","early_phenotype","late_phenotype")

我想制作通常所说的过渡情节&#34;。我得到的最接近的是:

library(Gmisc)
transitionPlot(table(df[,1:2]), txt_start_clr = "black", txt_end_clr = "black", fill_start_box = "white", fill_end_box = "white")

......产生这个情节: enter image description here

但我正在努力实现这个情节所没有的两件事:

  1. 我想要两列以上,在本例中有三列:基因型,早期表型和晚期表型。在这个例子中,它看起来像这样(我在Photoshop中实现了这一点,而不是在R中) enter image description here

  2. 我宁愿有多个带有抖动/透明度的箭头,而每个箭头代表一个单独的观察,而不是单个箭头具有连接两个盒子的不同重量,并且看起来像这样: enter image description here

  3. 有什么建议吗?

    P.S。我并不十分关心盒子的弯曲边缘或花哨的阴影。

1 个答案:

答案 0 :(得分:3)

  
      
  1. 我想要两列以上,在本例中为三列
  2.   
  3. 而不是连接两个不同重量的单个箭头   盒子,我宁愿有多个箭头
  4.   

也许尝试使用igraph

m <- sapply(1:3, function(x) paste0(df[, x], x))
el <- rbind(m[, 1:2], m[, 2:3])
library(igraph)
g <- graph_from_edgelist(el)
coords <- layout.norm(t(sapply(strsplit(V(g)$name, ""), function(x) as.numeric(c(-match(x[1], LETTERS), x[2])))))
plot(g, layout=coords[, 2:1])

enter image description here