Эй, похоже, вы поняли это, но при изучении вопроса (я обычно использую сетевой пакет, но в некоторых случаях я тоже пытался использовать igraph) я придумал функцию, которая должна делать это автоматически , зеркальное отображение дисплея = F функция.
delete.isolates <- function(graph, mode = 'all') {
isolates <- which(degree(graph, mode = mode) == 0) - 1
delete.vertices(graph, isolates)
}
В вашем случае выполнение этого с g1 удалит первую вершину, если вы использовали аргумент mode = 'in', и последнюю вершину, если вы использовали аргумент mode = 'out'.
Так в вашем случае, если вы ввели:
g2 <- delete.isolates(g1, mode = 'in')
plot(g2)
Ты должен получить то, что хочешь. Я не очень много использую igraph, поэтому вполне возможно, что эта функция столкнется с некоторыми проблемами для других графиков.
P.S. Это также дает своего рода странный результат, что в новом g2 первая вершина теперь является изолятом на основе степени. Эта функция, вероятно, бесполезна в большинстве ситуаций, но может быть полезна для создания более чистого графика.