2017-02-21 6 views
3

Ich benutze R und das Paket igraph, um einen zweiteiligen Graphen basierend auf einer Inzidenzmatrix zu erstellen, aber meine Gewichte werden nicht angezeigt? Ich habe ein Beispiel für das hinzugefügt, was ich unten versuchen möchte. Ich habe gewichtet = TRUE gesetzt und würde erwarten, dass die Kanten unterschiedliche Gewichte haben, aber die Linien alle die gleiche Dicke haben. Irgendwelche Vorschläge, was ich falsch mache?R igraph Bipartite Graph, warum werden meine Gewichte nicht angezeigt?

# Load packages 
library(igraph) 

# Create data 
pNames <- paste("P", 1:4, sep="") 
cNames <- paste("c", 1:3, sep="") 
rData <- matrix(sample(4,12,replace=TRUE)-1,nrow=4,dimnames=list(pNames,cNames)) 
print(rData) 

# Graph from matrix 
b <- graph_from_incidence_matrix(rData,weighted=TRUE) 

# Plot with layout 
plot(b, layout=layout.bipartite,vertex.color=c("green","cyan")[V(b)$type+1],edge.width = b$weights) 
+2

Sie müssen nur Gewichte in der Handlung Aufruf rufen mit 'edge.width = E (b) $ weights'. 'igraph 'erfordert, dass Sie Kanten,' E (Graph) 'oder Scheitelpunkte,' V (Graph) 'angeben, wenn Sie Attribute aufrufen. – paqmo

Antwort

2

Sie können die Attribute der Kanten finden

get.edge.attribute(b) 
#$weight 
#[1] 2 1 1 3 2 1 2 

Verwendung Als @paqmo erwähnt, jetzt wissen Sie, den Namen des Attributs und Sie können es verwenden, um die Kantenbreiten/Labels einzustellen:

plot(b, layout=layout.bipartite,vertex.color=c("green","cyan")[V(b)$type+1], 
    edge.width = E(b)$weight, edge.label=E(b)$weight, edge.label.cex=2) 

enter image description here

Verwandte Themen