美国大学生数学建模-足球传递网络图

python -networkx画网络图注意

使用networx画网络图,本人使用anaconda的spyder,之前没有装networkx,之后使用conda install networkx随机装了,后来发现matplotlib和networkx版本不匹配,经过反复的install,找到了两者的匹配版本,献上图在这里插入图片描述。在这里为防止其他萌新入坑,建议使用 conda install networkx==2.0,conda install matplotlib==2.2.3。最后,献上部分网络图:

  • 网络图代码如下:
# -*- coding: utf-8 -*-
"""
Created on Sat Feb 15 23:48:34 2020

@author: Doctor哈伦裤
"""
from matplotlib.colors import ListedColormap
import networkx as nx
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from collections import Counter
def painting(begin_row):
    pass_nodes=[]
    cmap=ListedColormap([ '#87CEEB','#FFD700', '#808000'])
    pass_ways_part=[]
    path=r"passingevents.csv"
    data=pd.read_csv(path)
    time=0
    begin_number=0
    data["pass_ways_total"]=data["OriginPlayerID"]+","+data["DestinationPlayerID"]
    for row in range(1,len(data.index)-1):
        if (data.loc[row][0]==begin_row):
            if(time==0):
                time=time+1,
                begin_number=row,
                number=begin_number[0]+1
            else:
                number=number+(1,)[0]
    for row in range(begin_number[0],number):
        if ((data.loc[row][0]==begin_row)and(data.loc[row][1]=="Huskies")):
           pass_nodes.append(data.loc[row][2]),
           pass_nodes.append(data.loc[row][3]),
           pass_ways_part.append(data.loc[row][11])    
    pass_ways_part=sorted(pass_ways_part)
    pass_ways_part_dict=Counter(pass_ways_part)
    pass_relation=[i.split(",") for i in pass_ways_part_dict.keys()]
    pass_relation=[tuple(i) for i in pass_relation]
    #print(np.shape(pass_relation))
    #print(np.shape(pass_relation[0]))
    pass_node=set(pass_nodes)   
    node_number=[]
    for i in pass_node:
        node_number.append(pass_nodes.count(i))
    nodes_numbers=dict(zip(pass_node,node_number))    
    #print(nodes_numbers)
    edgeWidth=[]
    for i in pass_ways_part_dict.values():
        edgeWidth.append(i)
    plt.figure(figsize=(12, 8) , dpi=50)  
    G=nx.MultiGraph()
    #print(pass_node)
    G.add_nodes_from(pass_node)
    G.add_edges_from(pass_relation)
    #print(len(G.edges()))
    D=dict(G.degree)

    pos = nx.spring_layout(G)
    plt.subplot()
    nx.draw(G,pos,nodelist=D.keys(),node_size=[v*30 for v in D.values()],node_color=range(len(G.nodes())),node_cmap=plt.cm.Paired,with_labels=True,
        edge_color= range(len(G.edges())),edge_cmap=cmap,width=edgeWidth,alpha=1)
    plt.show()

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值