วาด Graph แรกด้วย NetworkX

3231207028_7c55a31874[1].jpgอย่างที่ได้เคยกล่าวแนะนำไปแล้วในเรื่องการใช้เครื่องมือ

NetworkX เป็น Python Package เพื่อ Create และ Manipulate โครงสร้างข้อมูลกราฟ ทำให้ง่ายในการ Prove of Concept – Algorithm เบื้องต้น ก่อนที่จะไปคำนึงถึงทักษะด้าน Programming

ขั้นแรก

เนื่องจากต้องการใช้งานร่วมกับ Eclipse + PyDev จึงจัดให้ Package ทั้งหมด Based on Windows 32 ดังนั้นสำหรับการใช้งาน NetworkX ในครั้งนี้ สิ่งที่ต้องลงเบื้องต้นได้แก่

  • Python2.5.4.msi
  • matplotlib-0.98.5.2.win32-py2.5.exe
  • networkx-0.99.win32.exe
  • numpy-1.2.1-win32-superpack-python2.5.exe

หลังจาก Install เรียบร้อยแล้ว ให้ทดสอบ Code ต่อไปนี้

print “hello”

import networkx as nx
G=nx.Graph()
G.add_edge(1,2)
G.add_node(“spam”)
print G.nodes()
print G.edges()

import matplotlib.pyplot as plt

nx.draw(G)
nx.draw_random(G)
nx.draw_circular(G)
nx.draw_spectral(G)

plt.show()


ขั้นต่อมา

เนื่องจากต้องการออกแบบ Graph เพื่อทดสอบ Algorithm หรือ ต้องการจัดเก็บข้อมูล Graph ที่ประมวลผลได้จาก Python จึงจำเป็นต้องสามารถ นำเข้า/จัดเก็บ file ที่เป็นมาตรฐานสำหรับ Graph ได้ ซึ่ง file .dot .. DOT Language ก็เป็นที่นิยม

การสร้างหรือดูผลลัพท์ของ Graph – อาศัยเครื่องมือชื่อว่า GraphViz (ในที่นี้ใช้ graphviz-mingw-2.23.20090313.0445.msi ) โดยภายใน Installation Package ประกอบไปด้วย Software สำหรับวาด/จัดเก็บ Graph รวมถึงส่วนของ Library แสดงผล ให้นำไปพัฒนาต่อได้

จากนั้น เพื่อต้องการจะทำให้ NetworkX นำ Graph ไปประมวลผล (สามารถอ่านเขียน หรือวาด File .dot) ได้จำต้องลง

  • pydot-1.0.2.tar.gz
  • pyparsing-1.5.1.win32.exe

ทั้งนี้ เนื่องจาก pydot เป็นส่วนที่ต้อง compile ให้เข้ากับ win32 จึงต้องใช้คำสั่ง python setup.py install

สุดท้าย ทดสอบด้วย Code ต่อไปนี้

import net

workx as nx
G = nx.Graph()
G.add_edge(1,2)
G.add_node(“spam”)
print G.nodes()
print G.edges()

nx.draw_graphviz(G)

import matplotlib.pyplot as plt
#plt.savefig(“graph.png”) # For saving graphic file .png
plt.show()
nx.write_dot(G, ‘c:\\graph.dot’)

*** ปัญหาที่เกิดขึ้นคือ pydot หา GraphViz ไม่เจอ .. จึงจำเป็นต้องเพิ่ม GraphViz install path เข้าไว้ใน %PATH% ของ System ด้วย


Advertisements

3 thoughts on “วาด Graph แรกด้วย NetworkX

  1. พี่ครับ ผมยังไม่เข้าใจในการติดตั้ง
    – Eclipse + PyDev หาโหลดจากที่ใดได้บ้างครับ ต้องลง java ด้วยเปล่า
    – graphviz-mingw-2.23.20090313.0445.msi ไม่มีครับ เปลี่ยนเป็น graphviz-2.24 ได้เปล่า
    – pydot-1.0.2.tar.gz ตัวนี้ ติดตั้งยังไง
    – คำสั่ง python setup.py install คําสั่งนี้ด้วยครับ
    ส่วน code เขียนในไหน และวิธีรัน รันอย่างไรครับ
    ป.ล. mail น้อง harvestbird@hotmail.com,prapin.bird@gmail.com

  2. @Bird
    – แน่นอนครับ ต้องลง Java สำหรับ Eclipse
    – ไม่รับประกันครับ
    – pydot เป็น Package หนึ่งของ Python ครับ .. สำหรับ Windows สามารถลงได้สองแบบคือ แบบ .exe install กับ Copy package source code มา compile เอง .. ตามที่่ได้เขียนไว้ใน บทความ

  3. #ีuse jdk 5 หรือ jdk 6?
    #Eclipse + PyDev มีหลายตัวมากมายงับ คือ พี่บอก link โหลดมาเลยดีก๋างับตัวไหน
    # pydot-1.0.2.tar.gz กับ pyparsing-1.5.1.win32.exe ตัวเดียวกันเปล่า
    # * Python2.5.4.msi
    * matplotlib-0.98.5.2.win32-py2.5.exe
    * networkx-0.99.win32.exe
    * numpy-1.2.1-win32-superpack-python2.5.exe
    คือ 4 ตัวนี้ install เรัยบร้อยแล้วงับ
    #บอก link โหลด graphviz-mingw-2.23.20090313.0445.msi มาหน่อยเถิดงับ
    ป.ล.1 พี่งับ คือต้องการทําให้เสร็จภายในวันอาทิตย์นะงับ บอกตรงๆ เลยไม่เคยใช้เลย เคยแต่ cygwin
    ป.ล.2 นี่คงเป็นเบอร์พี่ใช่ไหม 0814899502

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s