baseball_weighted-degree.py 1.87 KB
#-*-encoding utf-8 -*-

import matplotlib.pyplot as plt
import networkx as nx
from openpyxl import load_workbook

wb = load_workbook("baseball.xlsx")
load_ws = wb['Sheet1']


def make_edge(BBlist):
    edge_list = []
    for i in range(0,len(BBlist)):
            for j in range(0, len(BBlist)):
                if i == j:
                    break
                else:
                    edge_list.append((BBlist[i],BBlist[j]))
    return edge_list

BB_name_list = []
BB_Salary_list = []

for i in range(1,857,1):
    school_name='G'+str(i)
    player_name='B'+str(i)
    name3=(str(load_ws[school_name].value) +','+ str(load_ws[player_name].value)).split(',')
    BB_Salary_list.append(int(load_ws['H'+str(i)].value))
    BB_name_list.append(name3)


edge_list = []
graph_list = []
check_list = []

for i in range(0,856):
    graph = nx.Graph()
    edge = make_edge(BB_name_list[i])
    if BB_name_list[i] in check_list:
        BB_Salary_list[i]=BB_Salary_list[i]+BB_Salary_list[check_list.index(BB_name_list[i])]
        BB_Salary_list[check_list.index(BB_name_list[i])]=BB_Salary_list[i]
        check_list.append(BB_name_list[i])
    else:
        check_list.append(BB_name_list[i])
        
    edge_list.append(edge)
    graph.add_nodes_from(BB_name_list[i])
    graph.add_edges_from(edge_list[i], weight = BB_Salary_list[i]/10000000000)
    graph_list.append(graph)


total = nx.Graph()

for i in range(0,856):
    total = nx.compose(total, graph_list[i])

degree = total.degree()
nx.write_gexf(total, "baseball_weighted-degree.gexf")

options = {
        'edge_color': '#FFDEA2',
        'width': 1,
        'with_labels': True,
        'font_weight': 'regular',
}

plt.figure(figsize=(20,20))
pos = nx.spring_layout(total, iterations = 10)
nx.draw(total, pos, **options, font_family='batang', font_color='black', font_size=8)  
ax = plt.gca()
ax.collections[0].set_edgecolor("#555555")
plt.show()