用Pyecharts绘制网络关系图
2020-03-31 本文已影响0人
askka
airports-world-network
GraphNode是各个节点基本参数。其中'name'和'value'是默认的浮动显示数据。'x'、'y'是不指定布局方式layout时才必需,'symbolSize'和'category'则可进一步描述节点数据的其它属性,比如用不同颜色来分门别类表示不同的'category',节点的大小则由'symbolSize'决定,类似题图中用节点的大小描述各个机场的繁忙程度。
nodes
GraphLink相对简单,[{'source': x , 'target': y}]描述关系数据的起止节点。
GraphCategory是节点类别的列表[{'name': '类目0'}],也可指定各类节点的图标、尺寸等。
pyecharts中的示例如下所示:
Pyecharts Graph: Les Miserables
'x'、'y'只在layout = 'none' 时才生效!
题图引自flowingdata.com: air-transportation-network/
对照pyecharts文档照猫画虎,绘制了一个文本引用关系的关系图。
数据格式
按照说明文档,关系图需要的数据包括:GraphNode(节点数据项)、GraphLink(节点间的关系数据)和GraphCategory(节点分类类目),如下图。
GraphNode是各个节点基本参数。其中'name'和'value'是默认的浮动显示数据。'x'、'y'是不指定布局方式layout时才必需,'symbolSize'和'category'则可进一步描述节点数据的其它属性,比如用不同颜色来分门别类表示不同的'category',节点的大小则由'symbolSize'决定,类似题图中用节点的大小描述各个机场的繁忙程度。
nodes
GraphLink相对简单,[{'source': x , 'target': y}]描述关系数据的起止节点。
GraphCategory是节点类别的列表[{'name': '类目0'}],也可指定各类节点的图标、尺寸等。
pyecharts中的示例如下所示:
Pyecharts Graph: Les Miserables
几个值得一提的设置
'symbol'和'edge_symbol'
我自己绘制的关系图如下。试了下'symbol'参数指定节点图形;以及将节点连线指定为由'source'指向'target'的有向图形式。
GraphNode数据的'id'和'name'
发现当GraphNode数据中存在'id'属性时,GraphLink中[{'source': id_x , 'target': id_y}]必须与GraphNode的id相对应(参见上图Pyecharts Graph: Les Miserables),而不是与'name'对应。
links中的数据为[{'id': '0', 'source': '1', 'target': '0'}…]
我倒是觉得这种形式的描述并不直观,不如直接[{ 'source': 'Napoleon', 'target': 'Myriel'}…]看得更明白。
实际上GraphNode和GraphLink并不需要'id'属性,可以直接省去也不妨事。
layout布局
'x'、'y'只在layout = 'none' 时才生效!
GraphNode的数据类型
一开始严格按照说明文档示例 'id' = '0',读取csv文件时加了一句 dtype=object 来指定'id'为字符串'0'而不是数字0,后来发现其实这里的数据类型对绘制关系图并无影响,类似的,节点中写成了'symbolSize': '9.4 '也不影响。
不过如前所述,其实并不需要'id'属性。