आर

2011-04-04 12 views
5

में निर्देशित मल्टीग्राफ प्लॉटिंग मैंने आर में कभी भी ग्राफ़ प्लॉटिंग पैकेज का उपयोग नहीं किया है, मैं बुनियादी साजिश आदेशों से परिचित हूं और ggplot2 पैकेज के साथ परिचित हूं। जो मैंने पाया है (लेकिन अभी तक कोशिश नहीं की गई) Rgraphviz, network और igraph पैकेज हैं। दोनों के बीच कई किनारों आकर्षित करने के लिएआर

  • सरल लेआउट इंजन है (वसंत लेआउट, यादृच्छिक, ...)
  • प्रयास: तो मैं आप से पूछना करने के लिए है, जो पैकेज सबसे सरल सीखने की अवस्था और निम्न आवश्यकताओं को संतुष्ट करता है करना चाहते हैं शिखर सम्मेलन ताकि वे ओवरलैप न हों। बोनस के रूप में इसे समायोजित करने में सक्षम होना अच्छा होगा।
  • लूप खींच सकते हैं।
  • वर्टेक्स और किनारे लेबल, कशेरुक और किनारे का आकार और रंग समायोज्य हैं।
  • (लिंक विश्लेषण, कम से कम पथ, अधिकतम प्रवाह आदि है, लेकिन अच्छा तरह ग्राफ एल्गोरिदम से किसी के लिए कोई ज़रूरत नहीं, यदि मौजूद)

उत्तर

3

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

इंटरेक्टिव प्रदर्शन (वहाँ 3 डी प्रदर्शन के लिए rgl का उपयोग कर की संभावना है), यह कैसा दिखता साथ

(मैं थोड़ा बाद में एक शीर्ष स्थानांतरित कर दिया):

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

enter image description here

अंत में, आप ग्राफिक्स के लिए dot जैसे अधिकांश सामान्य प्रारूप में ग्राफ को भी निर्यात कर सकते हैं।

+0

धन्यवाद। जब मैं ग्राफ को दोबारा प्लॉट करने की ज़रूरत है, तो मैं इग्राफ को आज़माउंगा! इंफोस के लिए, मैंने प्रश्न पूछने के बाद आरजीआरपीवीज़ के साथ गए और मेरे मूल कार्य को दोबारा सुधारकर कई किनारों को खींचने की आवश्यकता से दूर हो गए। – Timo

+0

@Timo सुनने के लिए अच्छा है कि आपको ग्राफविज़ के साथ अपना रास्ता मिला। मैं इसका बहुत उपयोग करता हूं। यह सिर्फ 'igraph' सबसे शक्तिशाली है, आईएमओ। (बीटीडब्ल्यू, मेरे क्यू के लिए मेरा +1, जब मैंने जवाब दिया: मैं वोट से बाहर था :-) – chl

2

multigraph आर पैकेज भी उपयोगी हो सकता है। उपर्युक्त उदाहरण के लिए 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