2015-08-28 15 views
6

Sto provando a tracciare un grafico che mostra solo le etichette per determinati vertici. In questo caso, voglio solo visualizzare le etichette per i vertici con un certo numero di bordi.Mostra solo etichette specifiche sul grafico di rete utilizzando igraph in R

sto leggendo vertici e spigoli in oggetto grafico in questo modo:

nodes <- read.csv("path_to_file.csv") 
edges <- read.csv("path_to_file.csv") 
g <- graph_from_data_frame(edges,directed=TRUE,vertices=nodes) 

Io uso il seguente comando per tracciare il grafico e variare la larghezza del bordo in base al numero di connessioni (i $ RELS attributo è il numero di connessioni tra due vertici):

plot.igraph(g,vertex.size=3,vertex.label.cex=0.5,layout=layout.fruchterman.reingold(g,niter=10000),edge.arrow.size=0.15,edge.width=E(g)$rels/100) 

c'è un modo di dire, per esempio, che solo i vertici con> 100 bordi dovuto loro etichetta visualizzata? Se provo a lasciare le etichette dei vertici nei miei file CSV, igraph pensa che siano vertici duplicati.


Esempi di dati

nodes.csv 
name | org_id 
U.S. Department of Energy | 70063 
Environmental Protection Agency | 100000 

edges.csv 
from | to | rels 
U.S. Department of Energy | Hanford SSAB | 477 
Natural Resources Defense Council | Environmental Protection Agency | 322 
+2

Tu hai stato su SO per per un po ', quindi dovresti sapere che è ora previsto fornire i tuoi dati, o almeno un campione rappresentativo. Altrimenti dobbiamo inventare i dati per te, per dimostrare una soluzione. – jlhoward

+0

@jlhoward Ottimo punto, grazie! Aggiunto. – tchaymore

risposta

6

Prova

library(igraph) 
set.seed(1) 
g <- sample_pa(20) 
V(g)$label <- letters[1:20] 
plot(g, vertex.label = ifelse(degree(g) > 2, V(g)$label, NA)) 

per visualizzare solo le etichette per vertici con un grado maggiore di 2:

enter image description here

+0

una domanda di risposta (piuttosto tardiva) sulla risposta e la mia domanda è strettamente correlata a questa (perché non chiedo una "nuova" domanda): Se non usi la laurea o la centralità, ma l'autovettore o centralità dell'hub, come funzionerebbe la tua raccomandazione allora (dal momento che devi specificare il vettore per lavorare correttamente con i valori)? Tu (o qualcun altro) hai un'idea? –

+0

@Stefan_W È meglio aprire una nuova domanda che mostri un piccolo esempio, cosa hai provato e perché non ha funzionato. – lukeA