2011-11-03 17 views
25

एक स्कूल प्रोजेक्ट के लिए मुझे social network को परिभाषित करने की आवश्यकता है, इसका विश्लेषण करें और इसे आकर्षित करें। मैं इसे हाथ से खींच सकता हूं और इसका विश्लेषण कर सकता हूं (विभिन्न मीट्रिक की गणना) हाथ से। लेकिन पाइथन प्रेमी होने के नाते, मुझे उम्मीद है कि इसके लिए एक पायथन टूल है।पायथन के साथ सोशल नेटवर्क का आसान दृश्य और विश्लेषण?

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

यदि आप ऐसे पायथन मॉड्यूल के बारे में जानते हैं, तो इसकी सराहना की जाती है यदि आप मॉड्यूल के नाम के साथ जवाब देने के बजाय अपने उत्तर में खिलौना उदाहरण प्रदान कर सकते हैं।

उत्तर

21

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

हालांकि networkx एक नेटवर्क (दस्तावेज़ देखें) कल्पना करने के लिए इस्तेमाल किया जा सकता है, तो आप एक नेटवर्क दृश्य आवेदन का उपयोग करना चाहें जैसे Gephi (gephi.org से उपलब्ध है)। नेटवर्क x आयात और निर्यात प्रारूपों की विस्तृत श्रृंखला का समर्थन करता है। यदि आप ग्राफएम जैसे प्रारूप का उपयोग कर नेटवर्क निर्यात करते हैं, तो निर्यात की गई फ़ाइल को गेफी में आसानी से लोड किया जा सकता है और वहां विज़ुअलाइज़ किया जा सकता है।

import networkx as nx 
G=nx.Graph() 
G.add_edges_from([(1,2),(1,3),(1,4),(3,4)]) 
G 
>>> <networkx.classes.graph.Graph object at 0x128a930> 
G.nodes(data=True) 
>>> [(1, {}), (2, {}), (3, {}), (4, {})] 
G.node[1]['attribute']='value' 
G.nodes(data=True) 
>>> [(1, {'attribute': 'value'}), (2, {}), (3, {}), (4, {})] 
nx.write_graphml(G,'so.graphml') 
+0

AJAX कॉल के माध्यम से एचटीएमएल में इस एन/डब्ल्यू ग्राफ को कैसे लाया जाए? – NoobEditor

4

networkx एक अच्छा है। विज़ुअलाइज़ेशन के लिए भी ग्राफविज़ की आवश्यकता हो सकती है।

+0

ग्राफविज़ की आवश्यकता नहीं है, लेकिन वांछनीय है। –

1

हालांकि आपके पैरामीटर के भीतर सख्ती से नहीं, मैंने पाइथन का उपयोग करने से पहले कुछ सोशल-नेटवर्क विश्लेषण किया है। यह ठीक था, मैं एक परियोजना के लिए एक एक्सेल (agast!) प्लगइन, NodeXL (http://www.nodexl.codeplex.com/) का उपयोग कर समाप्त हुआ और मुझे लगता है कि यह काफी बढ़िया है। कार्यक्रम के लिए एक जीयूआई और कोड उन्मुख तरीके दोनों के साथ, आप जो कुछ पूछ रहे हैं, वह बहुत कुछ करता है।

1

विज़ुअलाइज़ेशन के लिए मैं XDot (GitHub पर भी) जोसे फोन्सेका द्वारा अनुशंसा कर सकता हूं। networkx के साथ संयोजन आपके लिए उपयुक्त हो सकता है।

8

नेटवर्कक्स और गेफी कॉम्बो शांत है। नेटवर्कएक्स ग्राफएमएल प्रारूप को आउटपुट करने में सक्षम है। गेफी पर अधिक जानकारी के लिए: http://gephi.org/

+0

Gexf फ़ाइल प्रारूप Gephi के लिए और भी अधिक "मूल" है, (उदाहरण के लिए गतिशीलता प्रबंधित करता है) और नेटवर्कएक्स आउटपुट भी इसके साथ: https://networkx.github.io/documentation/networkx-1.10/reference/readwrite.gexf। एचटीएमएल – seinecle

0

Networkx वास्तव में एक साफ पुस्तकालय है। मैं इसे गेफी के साथ भी सुझाव दूंगा कि मुझे Python console का उपयोग करना होगा (मैंने अभी तक इस कॉम्बो का परीक्षण नहीं किया है)।

मैं विज़ुअलाइज़ेशन के लिए Ubigraph का उपयोग करता था, लेकिन यह उस अच्छी तरह से स्केल नहीं करता है और यह स्वामित्व है।

1

एक और तरीका Cytoscape है। आप भी जीएमएल फाइलों के साथ उपयोग कर सकते हैं।

जैसे साइकेमेडिया ने कहा, आप अपने ग्राफ को साजिश करने और जीएमएल फ़ाइल में निर्यात करने के लिए नेटवर्कक्स का उपयोग कर सकते हैं।

nx.write_graphml(G,'my_file.gml') 

उसके बाद, साइटोसस्केप में नेटवर्क फ़ाइल से क्लिक करें और अपनी जीएमएल फ़ाइल का चयन करें। वहां, आप शैली भी बदल सकते हैं।

+0

स्टैक ओवरफ़्लो पर लिंक-केवल उत्तर दृढ़ता से निराश होते हैं। इसके बजाए, [यह बेहतर है] (http://meta.stackoverflow.com/q/8259) सामाजिक नेटवर्क के लिए साइटोसस्केप का उपयोग करने का मूल उदाहरण शामिल करने के लिए। – drs

+0

मुझे खेद है, डॉ। लेकिन मैंने अभी अन्य जवाब पूरे किए हैं। मैं बेहतर होगा। – anapaulagomes

9

नेटवर्कक्स और गेफी का उल्लेख करने वाले तीन उत्तरों हैं, लेकिन कोई भी graph-tool का उल्लेख नहीं करता है। मुख्य अंतर यह है कि एल्गोरिदम को सी ++ में कार्यान्वित किया जाता है, उदाहरण के लिए performance boost Networkx।

और, इसमें विज़ुअलाइजेशन भी शामिल है। साइट से:

विभिन्न प्रकार के एल्गोरिदम और आउटपुट स्वरूपों (स्क्रीन सहित) का उपयोग करके आसानी से अपने ग्राफ खींचें। ग्राफ-टूल का अपना लेआउट एल्गोरिदम और बहुमुखी, इंटरैक्टिव ड्राइंग दिनचर्या कैरो और जीटीके + के आधार पर है, लेकिन यह उत्कृष्ट ग्राफवीज़ पैकेज में एक बहुत ही आरामदायक इंटरफ़ेस के रूप में भी काम कर सकता है।

यहाँ एक स्वच्छ उदाहरण from the docs है (देखते हैं कई कई और अधिक):

Block partition of a political blogs network

(एक राजनीतिक ब्लॉग नेटवर्क के ब्लॉक विभाजन)।

और, इसके लिए कोड:

>>> g = gt.collection.data["polblogs"] 
>>> g = gt.GraphView(g, vfilt=gt.label_largest_component(gt.GraphView(g, directed=False))) 
>>> state = gt.BlockState(g, B=g.num_vertices(), deg_corr=True) 
>>> state = gt.multilevel_minimize(state, B=2) 
>>> gt.graph_draw(g, pos=g.vp["pos"], vertex_fill_color=state.get_blocks(), output="polblogs_agg.pdf") 
<...> 

(नोट: प्रत्येक नोड के पदों इस उदाहरण में पूर्व निर्धारित है, इसलिए कोई लेआउट एल्गोरिथ्म चलाने के लिए किया था)

यहाँ एक और उदाहरण है एक ही डेटा का उपयोग (और परिणाम अविश्वसनीय है): http://ryancompton.net/2014/10/05/graph-tools-visualization-is-pretty-good/

+0

'output =" polblogs_agg.pdf "एक समस्या होगी यदि किसी को इन ग्राफ को HTML पृष्ठ में एम्बेड करना है? 'html' या' div' वापस करने के लिए संभव है ?? – NoobEditor

+1

देख @NoobEditor [डॉक्स] (https://graph-tool.skewed.de/static/doc/draw.html?highlight=output): 'fmt: आउटपुट फ़ाइल स्वरूप। संभावित मूल्य "ऑटो", "पीएस", "पीडीएफ", "एसवीजी", और "पीएनजी" हैं। यदि मान "ऑटो" है, प्रारूप उत्पादन parameter.'' से अनुमान लगाया जाता है तो बस इसे जैसे नाम उदाहरण के लिए .png और आपको एक पीएनजी मिलेगा। फिर अगला चरण इस छवि को अपने एचटीएमएल में शामिल करना है। – keyser

+0

मैक पर 2017 में ग्राफtool स्थापित करना असंभव है। ओएस एक्स mavericks की आवश्यकता है – swyx