项目地址: https://github.com/woriazzc/GOT_SocialNetGraph

参考[1]: https://zhuanlan.zhihu.com/p/92412494

参考[2]: https://blog.csdn.net/weixin_44324814/article/details/108100159

启动项目

具体操作请见github项目地址。

在参考[1]中的项目里给出的 GOT.csv 并不是可以直接使用的格式,可以参考我的github中的 GOT.csv 修改格式,或者直接用我的github中的 GOT.csv。

这里介绍Windows下的配置方式。

配置neo4j

以Windows10为例

安装java环境:

https://www.oracle.com/java/technologies/javase-downloads.html

从上面的链接下载JDK,跟随导引一步一步安装完成。

如下图添加系统变量。注意这里的路径要换成你刚才安装JDK的路径。

在Path中添加新的路径。

安装完成后cmd中输入java -version检查是否安装完成。

 

参考 https://blog.csdn.net/vivian_ll/article/details/89312526

官网下载最新版 Neo4j 社区版(Community)。需要注册后才能下载。

下载好后解压到自己想放的盘里,例如:E:\Program Files (x86)\neo4j-community-3.4.0

同安装Java,配置好环境变量。

进入控制台。

1
neo4j console

根据提示进入 http://localhost:7474/

第一次进入会提示修改密码。

导入数据集

在 localhost:7474 中找到最上方有 ‘$’ 符号的位置,输入

1
2
3
4
5
6
LOAD CSV WITH HEADERS FROM "https://www.macalester.edu/~abeverid/data/stormofswords.csv" AS row
MERGE (src:Character {name: row.Source})
MERGE (tgt:Character {name: row.Target})
MERGE (src)-[r:INTERACTS]->(tgt)
SET r.weight = toInteger(row.Weight)
RETURN count(*) AS paths_written

点击右侧运行符号运行后结果如下图。

 

配置node.js

首先你的电脑里要有node.js,这里就不再讲怎么装nodejs了。

安装依赖。

1
2
npm install express
npm install neo4j-driver

本项目要用到require,如果之后的步骤中提示找不到模块。参考 https://www.cnblogs.com/xiaofenguo/p/12084391.html

也可以尝试全局安装。

1
2
npm install express -g
npm install neo4j-driver -g

 

启动项目

在 server.js 中找到配置密码的位置,修改为你设置的neo4j密码。

1
2
3
4
5
#启动neo4j
neo4j start

#启动服务端
node server.js

打开localhost:8888,就可以看到了。

1
2
#停止neo4j
neo4j stop

要注意如果以后修改了文件中的内容后要在 server.js 中改一下端口再访问,否则会因为缓存过而无法得到修改后的网页。

 

NetworkX+Gephi美化

到上面为止已经可以做到交互与可视化了,但是还是觉得图太丑了。

那么就可以用到 Gephi 工具。

参考 https://blog.csdn.net/weixin_44324814/article/details/108100159

首先要下载安装好Gephi,这里就不讲了。

根据上面的链接中的代码得到社区划分以及Betweenness。

1
nx.write_gexf(G, 'game.gexf')

同样用上面的代码导出.gexf文件。

在Gephi中打开上面的.gexf文件。

接下来就不要跟着上面的参考链接做了,因为我们的数据集不一样而且Gephi版本也不同。

  1. 在“概览”窗口中。给划分好的各个社区网络画上不同的颜色:

    在外观-节点-颜色-Partition 中选择 community(这里的 community 就是我们刚才为每个点添加的社区编号属性)

  2. 仍然在“概览”窗口中。决定节点及节点上标注的角色姓名的大小:

    在外观-节点-大小-Ranking 中选择 betweenness(这里的 betweenness 就是我们刚才为每个点添加的 betweenness 属性)

    这一步可以做也可以不做,看各人审美修改即可。

  3. 仍然在“概览”窗口中。在“布局”窗口下选择布局算法,可以多尝试几种找到合适的。这里选用的是“Yifan Hu”。点击运行。

  4. 换到“预览”窗口。

    配置边以及节点标签。注意要勾选“重新调整边权”,并可以设置"Min. rescaled weight"与"Max. rescaled weight",还要在“节点标签”中勾选“显示标签”,并调整“最大字体”。

    如果之后看不到右侧的预览窗口中的图像,可以在最上边的“窗口”标签页中打开“预览”,并刷新。

  5. 点击“SVG/PDF/PNG”导出图像。