Skip to content

Instantly share code, notes, and snippets.

@emergent
Created September 16, 2012 13:21
Show Gist options
  • Save emergent/3732431 to your computer and use it in GitHub Desktop.
Save emergent/3732431 to your computer and use it in GitHub Desktop.
PILを使った適当なグラフ生成サンプル
#! /usr/bin/env python
from PIL import Image, ImageDraw
import random
import socialdata as sd
def drawnetwork(people,links):
img = Image.new('RGB',(500,500),(255,255,255))
draw = ImageDraw.Draw(img)
pos=dict(people)
for (a,b) in links:
draw.line((pos[a],pos[b]),fill=(255,0,0))
for n,p in pos.items():
draw.text(p,n,(0,0,0))
img.show()
def mk_socialdata():
people_num = 10
links_loop = 15
upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
lower="abcdefghijklmnopqrstuvwxyz"
a = 50
b = 450
people = [(random.choice(upper)
+random.choice(lower)
+random.choice(lower)
+random.choice(lower),
(random.randint(a,b),random.randint(a,b)))
for x in range(people_num)]
linkset = set([(random.choice(people)[0],random.choice(people)[0])
for i in range(links_loop)])
new_linkset = [x for x in linkset if len(set(x))!=1]
return (people, new_linkset)
#if True:
if False:
p,l = mk_socialdata()
drawnetwork(p,l)
else:
drawnetwork(sd.people, sd.links)
#! /bin/sh
python mk_link.py > socialdata.py
people = [('Qsxh', (69, 359)), ('Mhzb', (173, 144)), ('Njne', (292, 130)), ('Cmer', (285, 295)), ('Xqpt', (315, 107)), ('Xkgh', (343, 344)), ('Wlme', (135, 310)), ('Qvut', (58, 391)), ('Dxkr', (241, 314)), ('Fnvk', (52, 76))]
links = [('Xqpt', 'Wlme'), ('Qsxh', 'Fnvk'), ('Wlme', 'Mhzb'), ('Cmer', 'Mhzb'), ('Xqpt', 'Cmer'), ('Wlme', 'Cmer'), ('Wlme', 'Njne'), ('Njne', 'Mhzb'), ('Njne', 'Xqpt'), ('Wlme', 'Fnvk'), ('Dxkr', 'Cmer'), ('Cmer', 'Qvut'), ('Xkgh', 'Qvut'), ('Njne', 'Xkgh')]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment