Построение родословного/семейного дерева с использованием igraph в R

У меня есть очень простые данные родословной, которые я хотел бы визуализировать графически. Пример данных здесь

Я пробовал с kinship2, но безуспешно - см. здесь предыдущие проблемы с kinship2

Я также пробовал с igraph, но не смог получить правильный график. Мне удалось с помощью приведенного ниже кода получить хорошее представление о женских родословных.

library(igraph)
library(dplyr)

GGM_igraph <- read.csv("example_data.csv")
mothers=GGM_igraph[,c('Ring','Mother','famid')]
fathers=GGM_igraph[,c('Ring','Father','famid')]
links<-left_join(mothers, fathers)
g=graph.data.frame(links)

этот скрипт взят из этого вопроса изначально

G_Grouped = g
E(G_Grouped)$weight = 1

## Add edges with high weight between all nodes in the same group
for(i in unique(V(g)$famid)) {
  GroupV = which(V(g)$famid == i)
  G_Grouped = add_edges(G_Grouped, combn(GroupV, 5), attr=list(weight=10))
} 

## Now create a layout based on G_Grouped
set.seed(567)
LO = layout_with_fr(G_Grouped)

## Use the layout to plot the original graph
par(mar=c(0,0,0,0))

# then plot the graph
plot(g, vertex.color=links$famid, layout=LO,
     vertex.size = 8,
     vertex.label.cex=.7,
     vertex.label.color = "black",
     edge.arrow.size = 0.25,
     edge.arrow.mode = 1)

играфический вывод

Что я хотел бы сделать, так это: 1) включить самцов в тот же график, поскольку у некоторых из них было потомство от более чем одной самки за всю свою жизнь 2) вручную назначить цвета для каждой семьи. На данный момент он автоматический, который затем назначает матерям (большинство из которых не имеет семьи, поскольку они являются основателями) случайный цвет, а также повторно использует некоторые цвета, так как их недостаточно в палитре по умолчанию.


person TomCLewis    schedule 20.05.2020    source источник
comment
Судя по вашему графику, example_data содержит 60 или 70 записей. Возможно, вы могли бы сократить их до нескольких десятков и включить в свой вопрос в формате dput. Вероятно, было бы немного полезно иметь некоторые образцы данных для работы.   -  person WaltS    schedule 20.05.2020
comment
Привет @WaltS. Спасибо за ответ. Я не знаком с объектом формата dput или с тем, как включить их в вопрос. Код, который я получил в вопросе, загрузит набор данных, все, что нужно для добавления пути к файлу. Я уменьшил набор данных, как было предложено. Поскольку я не знаком с ним, было бы здорово понять преимущества dput по сравнению с тем, что у меня уже есть. Ваше здоровье   -  person TomCLewis    schedule 22.05.2020