美文网首页
用Pyecharts绘制网络关系图

用Pyecharts绘制网络关系图

作者: askka | 来源:发表于2020-03-31 15:05 被阅读0次
    airports-world-network
    题图引自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'属性。

    参考资料
    1. Pyecharts: 关系图Graph
    2. Pyecharts 基本图表:关系图
    3. flowingdata.com: air-transportation-network

    相关文章

      网友评论

          本文标题:用Pyecharts绘制网络关系图

          本文链接:https://www.haomeiwen.com/subject/soswuhtx.html