Пакет igraph , кажется, соответствует вашим требованиям, а функция tkplot()
помогает настроить окончательный макет при необходимости.
Вот пример использования:
s <- cbind(A=sample(letters[1:4], 100, replace=TRUE),
B=sample(letters[1:2], 100, replace=TRUE))
s.tab <- table(s[,1], s[,2])
library(igraph)
s.g <- graph.incidence(s.tab, weighted=T)
plot(s.g, layout=layout.circle,
vertex.label=c(letters[1:4],letters[2:1]),
vertex.color=c(rep("red",4),rep("blue",2)),
edge.width=c(s.tab)/3, vertex.size=20,
vertex.label.cex=3, vertex.label.color="white")
С интерактивным дисплеем (есть возможность использовать rgl
для 3D-отображения), это выглядит так (я немного переместил одну вершину после этого):
tkplot(s.g, layout=layout.circle, vertex.color=c(rep("red",4),rep("blue",2)))
Наконец, вы даже можете экспортировать свой график в наиболее распространенный формат, например dot
для graphviz.