48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
|
"""
|
||
|
========
|
||
|
Football
|
||
|
========
|
||
|
|
||
|
Load football network in GML format and compute some network statistcs.
|
||
|
|
||
|
Shows how to download GML graph in a zipped file, unpack it, and load
|
||
|
into a NetworkX graph.
|
||
|
|
||
|
Requires Internet connection to download the URL
|
||
|
http://www-personal.umich.edu/~mejn/netdata/football.zip
|
||
|
"""
|
||
|
|
||
|
import urllib.request as urllib
|
||
|
import io
|
||
|
import zipfile
|
||
|
|
||
|
import matplotlib.pyplot as plt
|
||
|
import networkx as nx
|
||
|
|
||
|
url = "http://www-personal.umich.edu/~mejn/netdata/football.zip"
|
||
|
|
||
|
sock = urllib.urlopen(url) # open URL
|
||
|
s = io.BytesIO(sock.read()) # read into BytesIO "file"
|
||
|
sock.close()
|
||
|
|
||
|
zf = zipfile.ZipFile(s) # zipfile object
|
||
|
txt = zf.read("football.txt").decode() # read info file
|
||
|
gml = zf.read("football.gml").decode() # read gml data
|
||
|
# throw away bogus first line with # from mejn files
|
||
|
gml = gml.split("\n")[1:]
|
||
|
G = nx.parse_gml(gml) # parse gml data
|
||
|
|
||
|
print(txt)
|
||
|
# print degree for each team - number of games
|
||
|
for n, d in G.degree():
|
||
|
print(f"{n:20} {d:2}")
|
||
|
|
||
|
options = {
|
||
|
"node_color": "black",
|
||
|
"node_size": 50,
|
||
|
"linewidths": 0,
|
||
|
"width": 0.1,
|
||
|
}
|
||
|
nx.draw(G, **options)
|
||
|
plt.show()
|