【发布时间】:2018-02-26 05:13:32
【问题描述】:
d = data.frame(
offspring = c("G2I1", "G2I2", "G2I3", "G3I1", "G3I2", "G3I3", "G3I4", "G4I1", "G4I2", "G4I3", "G4I4", "G5I1", "G5I2", "G5I3" ),
parent1 = c("G1I1", "G1I2", "G1I1", "G2I1", "G2I3", "G2I1", "G2I3", "G3I2", "G3I2", "G3I1", "G3I4", "G4I3", "G4I3", "G4I1" ),
parent2 = c("G1I3", "G1I2", "G1I2", "G2I2", "G2I2", "G2I2", "G2I3", "G3I4", "G3I1", "G3I2", "G3I4", "G4I1", "G4I1", "G4I2" )
)
print(d)
offspring parent1 parent2
1 G2I1 G1I1 G1I3 # generation 2
2 G2I2 G1I2 G1I2 # generation 2
3 G2I3 G1I1 G1I2 # generation 2
4 G3I1 G2I1 G2I2 # generation 3
5 G3I2 G2I3 G2I2 # generation 3
6 G3I3 G2I1 G2I2 # generation 3
7 G3I4 G2I3 G2I3 # generation 3
8 G4I1 G3I2 G3I4 # generation 4
9 G4I2 G3I2 G3I1 # generation 4
10 G4I3 G3I1 G3I2 # generation 4
11 G4I4 G3I4 G3I4 # generation 4
12 G5I1 G4I3 G4I1 # generation 5
13 G5I2 G4I3 G4I1 # generation 5
14 G5I3 G4I1 G4I2 # generation 5
数据表示
这些数据代表一个家谱。每条线表示一个后代和它的两个父母。我称它们为parent1 和parent2,因为它们是雌雄同体。而且,他们可以克隆自己!世代不重叠,这意味着n一代的后代的所有父母都出生在n-1一代。
让我们考虑一个例子。个人G3I4出生于第3代(G3),是这一代的个人索引4(I4;索引只是一个ID)。此人是个人G4I1 和个人G4I4 的父母。事实上,G3I4 是G4I4 的唯一父母,因为她克隆了自己。
问题
如何在R 中绘制这个家谱?
相关帖子
How to plot family tree in R 的帖子非常相关,但我未能将其应用于我的数据。第一个问题使用我不太熟悉的igraph。但是我没有得到任何好看的东西
d = tibble(
offspring = c("G2I1", "G2I2", "G2I3", "G3I1", "G3I2", "G3I3", "G3I4", "G4I1", "G4I2", "G4I3", "G4I4", "G5I1", "G5I2", "G5I3" ),
parent1 = c("G1I1", "G1I2", "G1I1", "G2I1", "G2I3", "G2I1", "G2I3", "G3I2", "G3I2", "G3I1", "G3I4", "G4I3", "G4I3", "G4I1" ),
parent2 = c("G1I3", "G1I2", "G1I2", "G2I2", "G2I2", "G2I2", "G2I3", "G3I4", "G3I1", "G3I2", "G3I4", "G4I1", "G4I1", "G4I2" )
)
d2 = data.frame(from=c(d$parent1,d$parent2), to=rep(d$offspring,2))
g=graph_from_data_frame(d2)
co=layout.reingold.tilford(g, flip.y=T)
plot(g,layout=co)
但图中缺少一些没有留下任何后代的个体。
第二个答案使用kinship2。据我了解,kinship2 无法处理无性繁殖。
【问题讨论】:
-
这张图有什么问题?您的预期输出是什么?
标签: r plot graph igraph genealogy