Как упоминал Саша Эпскамп, если ваши данные не являются идеальными, вы не можете нарисовать график, который бы не нарушал некоторые треугольные неравенства. Однако существуют методы, названные Многомерное масштабирование (MDS) , направленные на минимизацию таких нарушений.
Одна реализация в R - это cmdscale
из пакета stats
. Я бы порекомендовал пример внизу ?cmdscale
:
> require(graphics)
>
> loc <- cmdscale(eurodist)
> x <- loc[,1]
> y <- -loc[,2]
> plot(x, y, type="n", xlab="", ylab="", main="cmdscale(eurodist)")
> text(x, y, rownames(loc), cex=0.8)
Конечно, вы можете строить x
и y
, используя любые графические пакеты (вы спрашивали о igraph
специально).
Наконец, я уверен, что вы найдете множество других реализаций, если будете искать «многомерное масштабирование» или «MDS». Удачи.