ग्राफ सिद्धांत - विश्लेषण और दृश्य


22

मुझे यकीन नहीं है कि विषय क्रॉसविलेक्टेड ब्याज में प्रवेश करता है। आप मुझे बताइएगा।

मुझे एक ग्राफ ( ग्राफ सिद्धांत से ) का अध्ययन करना होगा । मेरे पास एक निश्चित संख्या में डॉट्स हैं जो जुड़े हुए हैं। मेरे पास सभी डॉट्स के साथ एक टेबल है और डॉट्स हर एक पर निर्भर है। (मेरे पास एक और तालिका भी है)

मेरे प्रश्न हैं:
क्या कोई अच्छा सॉफ्टवेयर (या R पैकेज) है जो आसानी से अध्ययन कर सकता है?
क्या ग्राफ प्रदर्शित करने का एक आसान तरीका है?


मैंने cran.r-project.org/web/packages/graph/vignettes/graph.pdf का उपयोग करने की कोशिश की है, लेकिन यह संकेत देता है कि पैकेज "Rgraphviz" अब उपलब्ध नहीं है। किसी के पास एक और उपाय है?
रॉकसाइंस

1
Rgraphviz bioconductor पर है: bioconductor.org/packages/release/bioc/html/Rgraphviz.html
Rob

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

जवाबों:


15

iGraph एक बहुत ही दिलचस्प क्रॉस-लैंग्वेज (R, Python, Ruby, C) लाइब्रेरी है। यह आपको अप्रत्यक्ष और निर्देशित ग्राफ़ के साथ काम करने की अनुमति देता है और पहले से लागू कुछ विश्लेषण एल्गोरिदम है।


1
(+1) ऐसा लगता है कि मेरी प्रतिक्रिया आपके बाद आई है। जैसा कि आपकी प्रतिक्रिया कुछ अलग परिप्रेक्ष्य (क्रॉस-प्लेटफॉर्म, एल्गोरिदम) पर प्रकाश डालती है, मुझे ऐसा लगता है कि हमारी प्रतिक्रियाएं बहुत बेमानी नहीं हैं, लेकिन मैं बिना किसी संभावना के खदान को हटा सकता हूं।
CHL

14

ग्राफ के अलावा निर्देशित और अप्रत्यक्ष रेखांकन, घटना / आसन्न मैट्रिक्स आदि का प्रतिनिधित्व करने के लिए विभिन्न पैकेज हैं ; उदाहरण के लिए जीआर टास्क दृश्य देखें।

विज़ुअलाइज़ेशन और मूल गणना के लिए, मुझे लगता है कि आरग्राफविज़ (बायोब के रूप में @Rob द्वारा बताया गया) के अलावा इग्राफ पैकेज विश्वसनीय है । ध्यान रखें कि उत्तरार्द्ध ठीक से काम करने के लिए, ग्राफविज़ को भी स्थापित किया जाना चाहिए। Igraph पैकेज अच्छा लेआउट बनाने, बहुत पसंद के लिए अच्छा एल्गोरिदम है Graphviz

नकली आसन्न मैट्रिक्स से शुरू होने वाला एक उदाहरण यहां दिया गया है:

adj.mat <- matrix(sample(c(0,1), 9, replace=TRUE), nr=3)
g <- graph.adjacency(adj.mat)
plot(g)

वैकल्पिक शब्द


आपके उत्तर के लिए धन्यवाद। ग्राफविज़ आर के साथ स्थापित करना आसान नहीं है, लेकिन यह एक महान पुस्तकालय
बनने के लिए सीमलेस है

FYI करें मैं अब क्या कर रहा हूं कि मैं R के साथ ग्राफविज़ कोड उत्पन्न करता हूं और मैंने इसे मीडियाविकी ग्राफविज़ एक्सटेंशन का उपयोग करके मीडियाविकी में पढ़ा। (Rgraphviz पैकेज R के अंतिम संस्करण के साथ काम करने और स्थापित करने में आसान नहीं है)
RockScience

"पैकेज 'ग्राफ को CRAN रिपॉजिटरी से हटा दिया गया था।"
बार्टार्टार्टनस

8

जो कुछ भी कहा गया है, उससे अलग अकेले (और आर के बाहर) के लिए, आपको गेफी की जाँच में दिलचस्पी हो सकती है ।


8

एक अन्य विकल्प स्टेटनेट पैकेज है। स्टेटनेट में एसएनए के सभी आमतौर पर उपयोग किए जाने वाले उपायों के लिए फ़ंक्शन हैं, और ईआरजी मॉडल का भी अनुमान लगा सकते हैं। यदि आपके पास एक किनारे की सूची में अपना डेटा है, तो डेटा में निम्नानुसार पढ़ें (अपने डेटा फ्रेम को "एडगेलिस्ट" लेबल किया गया है):

net <- as.network(edgelist, matrix.type = "edgelist", directed = TRUE) #if the network is directed, otherwise: directed = FALSE

यदि आपका डेटा एक आसन्न मैट्रिक्स में है, तो आप "adjacency" के साथ मैट्रिक्स टाइप करें।

net <- as.network(edgelist, matrix.type = "adjacency", directed = TRUE)

स्टेटनेट पैकेज में कुछ बहुत अच्छी प्लॉटिंग क्षमताएं हैं। एक साधारण प्लॉट करने के लिए बस टाइप करें:

gplot(net)

उनके बीच की केंद्रीयता के अनुसार नोड्स को स्केल करने के लिए, बस करें:

bet <- betweenness(net)
gplot(net, vertex.cex = bet)

डिफ़ॉल्ट रूप से gplot फ़ंक्शन नोड्स रखने के लिए Fruchterman-Reingold एल्गोरिथ्म का उपयोग करता है, हालांकि इसे मोड विकल्प से नियंत्रित किया जा सकता है, उदाहरण के लिए नोड प्रकार के प्लेसमेंट के लिए MDS का उपयोग करना:

gplot(net, vertex.cex, mode = "mds")

या एक सर्कल लेआउट का उपयोग करने के लिए:

gplot(net, vertex.cex, mode = "circle")

कई और संभावनाएं हैं, और यह मार्गदर्शिका अधिकांश बुनियादी विकल्पों को शामिल करती है। एक स्व निहित उदाहरण के लिए:

net <- rgraph(20) #generate a random network with 20 nodes
bet <- betweenness(net) #calculate betweenness scores
gplot(net) #a simple plot
gplot(net, vertex.cex = bet/3) #nodes scaled according to their betweenness centrality, the measure is divided by 3 so the nodes don't become to big.
gplot(net, vertex.cex = bet/3, mode = "circle") #with a circle layout
gplot(net, vertex.cex = bet/3, mode = "circle", label = 1:20) #with node labels

(+1) इस पैकेज का उपयोग कभी न करें, लेकिन आपका अवलोकन सुझाव देता है कि मैं इसे आज़माता हूं। पहली नजर में अच्छा लगता है।
CHL

3

एक समान प्रश्न cstheory पर पूछा गया था, भले ही आप विशेष रूप से planar रेखांकन , या ग्रंथ सूची दृश्य में रुचि रखते हैं

Gephi पहले से ही यहाँ उल्लेख किया गया था, लेकिन इसे कुछ लोगों द्वारा cstheory पर भी सुझाया गया था, इसलिए मुझे लगता है कि यह एक अच्छा विकल्प है।

अन्य शांत विकल्पों में शामिल हैं:

  • भड़कना वास्तव में कुछ शांत दृश्य उपकरण प्रदान करता है और रिपोर्ट और कागजात के लिए बहुत सुंदर ग्राफिक्स बनाता है।
  • Cyptoscape के पास कुछ बहुत शक्तिशाली विश्लेषण और विज़ुअलाइज़ेशन उपकरण हैं। यह रसायन विज्ञान और आणविक जीव विज्ञान के लिए विशेष रूप से अच्छा है।
  • यह वेबसाइट कई अन्य अच्छे विज़ुअलाइज़ेशन टूल्स और लाइब्रेरीज़ (हालांकि आर के लिए नहीं) के लिंक प्रदान करती है।

2

मैंने NodeXL को बहुत उपयोगी और उपयोग में आसान पाया । यह एक एमएस एक्सेल टेम्प्लेट है जो एक ग्राफ के आसान आयात / निर्यात प्रदान करता है, किनारों / कोने का स्वरूपण करता है, कुछ मैट्रिक्स की गणना करता है, कुछ क्लस्टरिंग एल्गोरिदम है। आप आसानी से कस्टम छवियों को कोने के रूप में उपयोग कर सकते हैं।
मेरे लिए एक अन्य सहायक उपकरण Microsoft स्वचालित ग्राफ़ लेआउट था जो अच्छा लेआउट प्रदान करता है जिसे ऑनलाइन (SVG का समर्थन करने वाले ब्राउज़र के साथ) आज़माया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.