【问题标题】:Creating a transition plot with three columns创建具有三列的过渡图
【发布时间】:2016-04-11 21:13:19
【问题描述】:

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

这里是示例数据:

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")

我想制作通常所说的“过渡情节”。我得到的最接近的是:

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

... 产生这个情节:

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

  1. 我想要多于两列,在本例中为三列:基因型、早期表型和晚期表型。在这个例子中,它看起来像这样(我在 Photoshop 中实现了这个,而不是在 R 中)

  2. 我宁愿拥有多个具有抖动/透明度的箭头,而不是连接两个框的具有不同权重的单个箭头,其中每个箭头代表一个单独的观察,并且看起来像这样:

有什么建议吗?

附:我真的不在乎盒子的弯曲边缘或花哨的阴影。

【问题讨论】:

标签: r plot


【解决方案1】:
  1. 我想要多于两列,在本例中为三列
  2. 而不是连接两个不同权重的单个箭头 盒子,我宁愿有多个箭头

也许可以尝试使用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])

【讨论】:

  • 看起来很有希望,以前从未听说过igraph。有没有办法让纺锤形的箭头变得不那么压倒性?真实数据有 1000 多个观察值,所以我宁愿使用 alpha / 透明度(我在上面的帖子中添加了示例图片)
  • 查看?igraph.plotting - 例如,您可以添加edge.arrow.size=0.5 以减小箭头大小。似乎带有 alpha 的 edge.color(例如“#99999966`)不起作用。
  • 我明白了,没有 alpha 虽然它看起来像一个实心纺锤体
猜你喜欢
  • 2021-12-09
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多