2016-08-31 3 views
2

Ich arbeite an Igraph versuchen, meine eigene Visualisierung des Graphen aus KEGG Xml zu machen. Ich habe eine Adjazenzmatrix für den Graphen und eine Kantenliste gefunden. Nun habe ich ein paar Bedingungen für meine Kanten, zum Beispiel habe ich Inhibition, Aktivierung und Bindungsassoziation (nicht gewichtet). Jetzt möchte ich die Kanten anders färben und ich möchte auch die Form der Kanten für jede Bedingung anders. Zum Beispiel eine Kante mit Pfeil und grün in Farbe für die Aktivierung. Eine Kante mit einer vertikalen Lüge nach der Kante und einer roten Farbe zur Inhibierung. Und vielleicht eine gepunktete Linie zur Bindungsassoziation.Randbedingungen in Igraph in R

Meine Rand Liste namens Reaktionen sieht wie folgt aus

> entry1 entry2 name 

    > 59   62  activation 
    > 62   57  Inhibition 
    > 61   60  binding association 
    > 53   42  activation 

Meine Knoten in Form einer gerichteten Adjazenzmatrix sind.

plot(G,vertex.shape= "rectangle", edge.arrow.size=.3, edge.color=ifelse(reactions$name =="activation", "green", "red"),vertex.color="gold", vertex.size2=1,vertex.frame.color="gray", vertex.label.color="black", vertex.label.cex=1, vertex.label.dist=0.5, edge.curved=0.2) 

Ich war nur tryin, wenn der Code für die Aktivierung mit anderen Bedingungen und dann beschäftigen i arbeitet zu überprüfen, aber alle sind meine Kanten die Aktivierung diejenigen grün nicht nur.

Könnte mir irgendein Körper dabei helfen. Ich habe versucht, edge.color mit ifelse zu verwenden, weiß aber nicht, wie ich es benutzen soll.

+0

Hallo Saamar, was hast du bisher probiert? Können Sie einen Ausschnitt des von Ihnen verwendeten Codes zusammen mit der XML-Quelle oder einer Teilmenge der XML-Datei posten? –

+0

Ich habe meine Frage bearbeitet alle Details @KeithHughitt –

Antwort

2

Anstatt die Variable mit Ihren Bedingungen im Datenrahmen zu referenzieren, versuchen Sie, die Daten im Diagramm selbst zu referenzieren. Hier kann ich Ihr Diagramm erstellen:

library(igraph) 

d <- data.frame(ego=c('59', '62', '61', '53'), alter=c('62', '57', '60', '42'), status=c("activation","Inhibition","binding association","activation")) 

G <- graph_from_data_frame(d) 

Mal sehen, was der Graph enthält:

str(G) 

Die (e/c) sagt uns, dass status ist ein Merkmal der Kanten, genau das, was wir die Farbe konditionieren wollen und oder Form der Kanten.

plot(G) 

plot(G, vertex.shape= "rectangle", edge.arrow.size=.3, edge.color=ifelse(E(G)$status =="activation", "green", "red"), vertex.color="gold", vertex.size2=1, vertex.frame.color="gray", vertex.label.color="black", vertex.label.cex=1, vertex.label.dist=0.5, edge.curved=0.2) 
Verwandte Themen