2012-06-28 12 views
5

मुझे यह answer वास्तव में उपयोगी पाया गया है। यह मुझे नेटवर्क/ग्राफ़ प्लॉट करने में मदद करता है और साजिश में नोड्स के लिए निर्देशांक का चयन करता है।igraph फिक्स्ड नोड समन्वय लेआउट

हालांकि, लेआउट निर्देशांक को -1 से 1 तक सहेजता है। सबसे पहले मैंने यह पता लगाने की कोशिश की कि यह कैसे करता है लेकिन नहीं कर सका। क्या ऐसा कुछ ऐसा करता है ??

(coordinate - mean(coordinates))/(coordinate + mean(coordinates) 

दूसरा मूल निर्देशांक रखने का कोई तरीका है? मैं ग्राफ के साथ कुल्हाड़ियों को प्लैट करना पसंद करता हूं और इसलिए शीर्ष पर सभी चीजों को पुन: सहेजना पसंद नहीं करता।

उत्तर

9

आपके पहले प्रश्न का उत्तर plot.igraph फ़ंक्शन के स्रोत कोड में है; पूर्ण स्रोत कोड प्राप्त करने के लिए आर प्रॉम्प्ट में plot.igraph टाइप करें। वहाँ वहाँ में एक हिस्सा है जो कहता है:

layout <- layout.norm(layout, -1, 1, -1, 1) 

layout.normigraph जो आप के लिए जादू करता है की एक और समारोह है, यह कैसे काम करता है यह देखने के लिए layout.norm टाइप करें।

अब, दूसरे प्रश्न का उत्तर वास्तव में सरल है; rescale=F को plot के तर्कों के लिए पास करें, जो igraphplot.igraph में पूरी शाखा को छोड़ देता है जहां layout.norm कहा जाता है, इसलिए यह आपके मूल निर्देशांक के साथ काम करेगा। आप एक्स और वाई अक्ष की सीमा निर्धारित करने के लिए सामान्य रूप से xlim और ylim का उपयोग कर सकते हैं।

+1

आपकी सहायता के लिए धन्यवाद, स्रोत की जांच कर रहा है। अक्ष की सीमाएं एक साथ बंधी हुई प्रतीत होती हैं, हालांकि i.e. 'ylim = c (0,6) '' xlim' श्रेणी को 6 तक भी बनाता है। जो परेशान है लेकिन यह एक छलांग है, फिर से धन्यवाद। – user1320502

+2

@ user1320502: डिफ़ॉल्ट 1: 1 पहलू अनुपात से बचने के लिए 'asp = FALSE' सेट करें। –

+0

जब मैं 'rescale = FALSE' सेट करता हूं तो आउटपुट क्यों नहीं होता है? – pengchy

0
set.seed(111) 
    ig <- graph_from_data_frame(as.data.frame(matrix(sample(letters,40,rep=TRUE),nc=2))) 
    set.seed(123) 
    ig.layout <- layout.fruchterman.reingold(ig) 
    rownames(ig.layout) <- V(ig)$name 
    par(bg="white",mar=c(0,0,0,0),oma=c(0,0,0,0)) 
    plot.igraph(ig,layout=ig.layout,vertex.color=adjustcolor("gray",alpha.f=0.5),rescale=FALSE,xlim=c(4,11),ylim=c(4,11)) 
    set.seed(321) 
    ig.sub <- subgraph(ig,sample(V(ig)$name,5)) 
    plot.igraph(ig.sub,layout=ig.layout[V(ig.sub)$name,],add=TRUE,vertex.color=adjustcolor("orange",alpha.f=0.5),rescale=FALSE) 

यह कोड ग्राफ आउटपुट करता है, जहां नारंगी नोड बाद में जोड़ा जाता है।

enter image description here

संबंधित मुद्दे