2013-02-18 16 views
12

का उपयोग करके नेटवर्कक्स में मल्टीग्राफ कैसे आकर्षित करें जब मैं multxraph numpy आसन्नता मैट्रिक्स को नेटवर्कएक्स (से_numpy_matrix फ़ंक्शन का उपयोग करके) का उपयोग करके पास करता हूं और फिर matplotlib का उपयोग करके ग्राफ़ खींचने का प्रयास करता हूं, यह एकाधिक किनारों को अनदेखा करता है।matplotlib या graphviz

मैं इसे कई किनारों को कैसे आकर्षित कर सकता हूं?

+0

संबंधित http://stackoverflow.com/questions/10379448/plotting-directed-graphs-in-python-in- का उपयोग कर write_dot कॉल करने के लिए है एक-रास्ता-वह-शो-ऑल-एज-अलग-अलग और http://stackoverflow.com/questions/15053686/networkx-overlapping-edges-when-visualizing-multigraph –

+0

बहुत खराब यह नेटवर्कक्स में लागू नहीं किया गया है! – famargar

उत्तर

12

ग्राफविज़ एक अच्छा काम करता है समानांतर किनारों को चित्रित करता है। आप इसे डॉट फ़ाइल लिखकर नेटवर्कएक्स के साथ उपयोग कर सकते हैं और उसके बाद ग्राफ़विज़ (उदाहरण के लिए नीटो लेआउट) के साथ प्रोसेसिंग कर सकते हैं। आप NetworkX 1.11 और नए पर NetworkX

In [1]: import networkx as nx 

In [2]: G=nx.MultiGraph() 

In [3]: G.add_edge(1,2) 

In [4]: G.add_edge(1,2) 

In [5]: nx.write_dot(G,'multi.dot') 

In [6]: !neato -T png multi.dot > multi.png 

enter image description here

के अलावा pydot या pygraphviz की आवश्यकता होगी, nx.write_dot प्रति issue on networkx github के रूप में काम नहीं करता। वैकल्पिक हल

from networkx.drawing.nx_pydot import write_dot

या

from networkx.drawing.nx_agraph import write_dot

+0

नेटवर्कक्स, पायग्राफविज़ और ग्राफविज़ के कौन से संस्करण आप उपयोग कर रहे हैं? – eyaler

+0

यहां मेरे पास है। लेकिन हाल के संस्करणों को एक ही परिणाम देना चाहिए। $ अजगर -c "आयात pygraphviz; प्रिंट pygraphviz .__ version__" 1.2.dev1990 $ डॉट वी डॉट - Graphviz संस्करण 2.29.20120625.0446 (20120625,0446) $ अजगर -c "आयात networkx; प्रिंट networkx .__ version__ " 1.8.dev_20130108070258 – Aric

+0

मैंने एक ही कोड लिखा, ग्राफ की तस्वीर उत्पन्न करने के लिए नीटो का उपयोग किया, लेकिन यह एक निर्देशित ग्राफ (और अप्रत्यक्ष नहीं) है और केवल एक किनारे (1,2) दिखाता है लेकिन किनारे (2, 1)। अप्रत्यक्ष क्यों नहीं है ????? और क्यों अन्य किनारे नहीं है ?? कृपया मदद करें! –