Построение направленных мультиграфов в R - PullRequest
5 голосов
/ 04 апреля 2011

Я никогда не использовал какой-либо пакет для построения графиков в R, я знаком с основными командами для построения графиков и с пакетом ggplot2.Я нашел (но еще не опробовал) пакеты Rgraphviz, network и igraph.Поэтому я хотел бы спросить вас, какой пакет имеет простейшую кривую обучения и удовлетворяет следующим требованиям:

  • Имеет простые механизмы компоновки (весенний макет, случайный, ...)
  • Пытаетсянарисовать несколько ребер между двумя вершинами, чтобы они не перекрывались.В качестве бонуса было бы неплохо иметь возможность отрегулировать это.
  • Может рисовать петли.
  • Метки вершин и ребер, размер и цвет вершин и кромок регулируются.
  • (Нет необходимости в каком-либо из алгоритмов графа, таких как анализ ссылок, кратчайший путь, максимальный поток и т. Д., Но хорошо, если он присутствует)

Ответы [ 2 ]

3 голосов
/ 01 мая 2011

Пакет 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")

enter image description here

С интерактивным дисплеем (есть возможность использовать rgl для 3D-отображения), это выглядит так (я немного переместил одну вершину после этого):

tkplot(s.g, layout=layout.circle, vertex.color=c(rep("red",4),rep("blue",2)))

enter image description here

Наконец, вы даже можете экспортировать свой график в наиболее распространенный формат, например dot для graphviz.

2 голосов
/ 16 сентября 2016

Пакет multigraph R также может быть полезен.Для приведенного выше примера bmgraph строит такой график:

library("multigraph")
bmgraph(s.tab, layout = "circ", pch = 16:16, pos = 0, vcol = 6:7, lwd = 3, cex = 9)

enter image description here

И для направленной версии:

bmgraph(s.tab, "circ", pch = 16:16, pos = 0, vcol = 6:7, lwd = 3, cex = 9, directed = TRUE)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...