Gephi可视化拓扑图简单实战

时间:2022-07-26
本文章向大家介绍Gephi可视化拓扑图简单实战,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

本来定在二月份参加美赛,因为A题是连续型的比较适合我们队,但是今年放的三道题都是数据题,做到第二天其实就觉得,怎么说,感觉之前准备的不是很充分,赛前没有很认真做画图的这一部分工作,现在想来还是很亏的,因为在比赛的时候其实大家思路都差不多,不会说大家都是本科阶段,你做这题能搞个神经网络我只能搞个层次分析,不存在的,甚至很多时候讲道理还是站在巨人的肩膀上做事的,查查别人之前在这一方面的论文,其实还是看你论文里面的插图精致不精致,很正常,因为在评审过程中评委也是人,他们看数学式子可能也没有去深究,甚至只是看个大概,更不用说你去熬夜辛辛苦苦写的那些英文了,最多是你写的式子看不懂and你的插图他没看懂可能会看看你写的文字部分。

所以说,会画图真的在美赛中特别吃香。

犯错了就得认,挨打要立正,承认错误我们才有可能写出比现阶段看起来很厉害的队伍做出的论文更好、更有新意的东西,实话说我是个不服输的人,大家资历都差不多,为什么到了你们队就拉跨了呢?

那就去找画图的软件嘛,说实话我心里是不信那些能画出很好看的拓扑图、流程图、关系图的队伍是写代码写出来的,顶多是数据用python或者matlab写的,肯定背后是用了一些专业的作图软件,我找,我去找,行吧,不懂就要学,非智力因素不要和我说是问题,之后我发现了gephi这款软件,其实这个画图软件嘛,我觉得只是用来批量画拓扑图的

正文开始以2020美赛d题为例,我简单做个小例子吧,读得懂之后我相信应该能产生你要的那种算拿的出手的图吧

这道题首先第一问是要分析传球网络,其实你可以做一个简单的传球有向图,比方说我传一个球给你,建立一条有向边,基本思路很简单,关键是可视化,如果你和我说用python的network,或者matlab,我觉得太麻烦了

如果用gephi的话,一般原材料是csv格式的,至少要有表头,我们这里的简单例子就是begin(起始点),end(终点),val(边权),说明一下这里的边权,我是取每次传球的欧式距离,其实并不算没有根据,但是这里我简单认为距离就是边权可能要修正一下

csv格式有要求,这个地方begin和end需要是两列,我们要从题目给的数据提取出来代码如下

import csv    #导出的时候用,导入用pandas最好
import pandas as pd #导入csv文件
import math
df=pd.read_csv("passingevents.csv")

matchid=df["MatchID"]
teamid=df["TeamID"]
beginplayer=df['OriginPlayerID']
endplayer=df['DestinationPlayerID']
beginx=df['EventOrigin_x']
beginy=df['EventOrigin_y']
endx=df['EventDestination_x']
endy=df['EventDestination_y']
ev=df['EventSubType']
daoru=[[ ] for i in range(3)]
print(beginplayer)

for i in range(len(matchid)):
    #print(matchid[i],ev[i],teamid[i],endplayer[i])
    if matchid[i]!=1:
        break
    else:
        if ev[i]=='Simple pass':
            #print(i)
            tepb=beginplayer[i][-2:]
            tepe=endplayer[i][-2:]
            print(tepb)
            daoru[0].append(tepb)
            daoru[1].append(tepe)
            daoru[2].append(math.sqrt((beginx[i]-endx[i])**2+(beginy[i]-endy[i])**2))
#rint(daoru)

label=['begin','to','val']
f = open('tt.csv','w',encoding='utf-8',newline='')
writer= csv.writer(f)
writer.writerow(label)
writer.writerows(daoru)

这个是在csv里面生成了我们要的数据,但是怎么说,你会发现它是横着的,你可以要转置粘贴一下,具体处理用word和wps均可,导入gephi之后你就发现在概览或者预览里面生成了图,不过未加工的图是很难看的,其实gephi还是好上手的,里面的一些功能你可以去熟悉一下,就是大概让你这个图美化的操作无非就是变浅边透明度、点透明度,边按某项指标上色,里面的布局你都可以试下,挑一个好看的,最重要的是点标签和边标签一定要加上,这里贴一张做的比较烂却又没什么办法改好的图:

这种图嘛,我不太好拿的出手,实在没办法也硬着头皮交吧emm

未完待续吧,之后可能要学学画其他图,毕竟又不是只有这种图