22 votos

Teoría de grafos: análisis y visualización

No estoy seguro de que el tema entre dentro del interés de CrossValidated. Ya me dirás.

Tengo que estudiar un gráfico (del teoría de grafos ) Ej. Tengo un cierto número de puntos que están conectados. Tengo una tabla con todos los puntos y los puntos de los que depende cada uno. (También tengo otra tabla con las implicaciones)

Mis preguntas son:
¿Existe un buen software (o un paquete R) para estudiarlo fácilmente?
¿Hay alguna forma sencilla de visualizar el gráfico?

15voto

Kevin Ballard Puntos 88866

iGraph es una biblioteca muy interesante entre lenguajes (R, Python, Ruby, C). Permite trabajar con grafos unidirigidos y dirigidos y tiene bastantes algoritmos de análisis ya implementados.

14voto

DavLink Puntos 101

Existen varios paquetes para representar grafos dirigidos y no dirigidos, matrices de incidencia/adyacencia, etc. además de gráfico ; mire, por ejemplo, el gR Vista de tareas.

Para la visualización y el cálculo básico, creo que el igrafo es el paquete fiable, además de Rgraphviz (en BioC, como señala @Rob). Tenga en cuenta que para que este último funcione correctamente, graphviz también debe estar instalado. El sitio igrafo tiene buenos algoritmos para crear buenos diseños, al igual que graphviz .

He aquí un ejemplo de uso, partiendo de una matriz de adyacencia falsa:

adj.mat <- matrix(sample(c(0,1), 9, replace=TRUE), nr=3)
g <- graph.adjacency(adj.mat)
plot(g)

alt text

8voto

Pyrolistical Puntos 937

Otra opción es el paquete statnet. Statnet tiene funciones para todas las medidas de uso común en SCN, y también puede estimar modelos ERG. Si tiene sus datos en una lista de bordes, léalos de la siguiente manera (suponiendo que su marco de datos está etiquetado como "lista de bordes"):

net <- as.network(edgelist, matrix.type = "edgelist", directed = TRUE) #if the network is directed, otherwise: directed = FALSE

Si sus datos están en una matriz de adyacencia, sustituya el argumento matrix.type por "adjacency":

net <- as.network(edgelist, matrix.type = "adjacency", directed = TRUE)

El paquete statnet tiene unas capacidades de trazado muy buenas. Para realizar un trazado sencillo, simplemente escriba:

gplot(net)

Para escalar los nodos en función de su centralidad de interrelación, basta con hacer:

bet <- betweenness(net)
gplot(net, vertex.cex = bet)

Por defecto la función gplot utiliza el algoritmo Fruchterman-Reingold para la colocación de los nodos, sin embargo esto puede ser controlado desde la opción mode, por ejemplo para utilizar MDS para la colocación de nodos tipo:

gplot(net, vertex.cex, mode = "mds")

o utilizar un diseño circular:

gplot(net, vertex.cex, mode = "circle")

Hay muchas más posibilidades, y esta guía cubre la mayoría de las opciones básicas. Para un ejemplo autónomo:

net <- rgraph(20) #generate a random network with 20 nodes
bet <- betweenness(net) #calculate betweenness scores
gplot(net) #a simple plot
gplot(net, vertex.cex = bet/3) #nodes scaled according to their betweenness centrality, the measure is divided by 3 so the nodes don't become to big.
gplot(net, vertex.cex = bet/3, mode = "circle") #with a circle layout
gplot(net, vertex.cex = bet/3, mode = "circle", label = 1:20) #with node labels

8voto

Zolomon Puntos 250

Aparte de lo dicho, para la tarea de visualización sola (y fuera de R), podría interesarte comprobar Gephi .

3voto

Ray Vega Puntos 30187

A pregunta similar se preguntó en cstheory, también si usted está interesado específicamente en grafos planos o visualización bibliográfica .

Gephi ya fue mencionado aquí, pero también fue recomendado por algunos en cstheory, así que creo que es una buena opción.

Otras opciones interesantes son:

  • Antorcha proporciona algunas herramientas de visualización realmente interesantes y crea gráficos muy bonitos para informes y documentos.
  • Cyptoscape dispone de herramientas de análisis y visualización muy potentes. Es especialmente bueno para la química y la biología molecular.
  • Este sitio web proporciona enlaces a muchas otras herramientas y bibliotecas de visualización (aunque no para R).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X