漫威英雄图谱 - gephi

在Github建了一个repo,主要用来玩 Marvel漫威 的数据 [github] 。原意是想用这些做个知识图谱的小demo,顺便做做图谱可视化。昨天看到一个基于gephi的漫威角色图谱的教程[tutorial] ,主要教你怎么画出下面这张图,想学的可以继续看下去:


画图大概需要哪些东西:

  • gephi 所需的数据
  • 使用 gephi 生成英雄关系图谱

获取数据

  • 方法1 - 现成的data:inode.csviedge.csv
  • 方法2 - 自己获取:marvel_gephi.py
    原po是把获取的数据存储在MongoDB,有数据库的可以参考教程原码 [tutorial]
  • 方法3 - 自己获取其他数据

相关参数解释

  • 节点(node)也就是顶点(vertical)。两个节点相连的部分称为边(edge)。
  • inode文件中:id 为英雄角色id ,即图中的节点,name 为英雄角色名字,id 与 name 一一对应;weight 为每一个英雄相关的所有故事数量,即节点的大小(权重)。
  • iedge 文件中:source 与 target 为源 id 与目标 id,表示两个角色之间的联系,即图中的边,本测试中因选择无向边,所以 source 与 target 不表示方向边表示边(无向);weight 为同一故事中出现这两个英雄的故事数量,即图中边的大小(权重)。

Gephi 使用

gephi就是一个画图工具,画这种关系图谱特别好看。下载会遇到些环境问题,个人感觉靠运气吧,实在不行就换个环境跑。

  • 本次使用输入 gephi 文档:inode.csv, iedge.csv

  • 步骤:

    1. 从【文件】—>【打开文件】中导入节点文件与边文件,注意导入边表格时,选择添加到【已存在的工作空间】(Append to existing workspace) 。
    2. 选择【布局】—>【选择一个布局】—>【Fruchterman Reingold】 ,进行相关算法运算。
    3. 选择【统计】—>【运行模块化】,计算 modularity_class 数据
    4. 外观
      4.1 选择【外观】—>【节点】+【颜色】—>【Partition】—>【Modularity Class】:利用刚刚的模块化数据进行分类。
      4.2 选择【外观】—>【节点】+【大小】—>【Ranking】—>【Weight】: 使用传入的 weight(故事数)决定节点大小。
      4.3 选择【数据资料】—>【数据表格】—>【复制数据到其它列】:将 name 列复制到 Label 列。
      4.4 选择【图】—>【T】即可显示标签。
      overviewdata
      4.5 在【预览】处自己调整好需要的数据后,点击【SVG/PDF/PNG】,即可导出图形。 preview
      4.6 还有更多的【过滤】,【统计】,【预览】的相关功能,就由大家慢慢探索了。
  • 图片参考及部分 gephi 设置。

    • 节点数据:

    node

    • 边数据:

    edge

    • 外观设置当在【统计】处 点击【运行模块化后】,此处出现【Modularity Class】:

    look

    • 【layout】(布局)设置,布局算法选择:【Fruchterman Reingold】:

    layout

    • 【统计】部分-点击【运行模块化】:

    statistic

效果图

would you buy me a coffee☕~
0%