首先看到官方例子代码及其效果图
# 官网例子
import json
from pyecharts import options as opts
from pyecharts.charts import Graph
with open("weibo.json", "r", encoding="utf-8") as f:
j = json.load(f)
nodes, links, categories, cont, mid, userl = j
c = (
Graph()
.add(
"",
nodes,
links,
categories,
repulsion=50,
linestyle_opts=opts.LineStyleOpts(curve=0.2),
label_opts=opts.LabelOpts(is_show=False),
)
.set_global_opts(
legend_opts=opts.LegendOpts(is_show=False),
title_opts=opts.TitleOpts(title="Graph-微博转发关系图"),
)
.render("graph_weibo.html")
)
例子中的weibo.json文件是一个list,这个list又主要包括node,link,category这三个部分。
node
node是一个节点的列表,每个节点包括以下信息:
(注:每个节点信息以dict的形式储存)
{
"name": "Camel3942", # 节点名即博主昵称
"symbolSize": 5, # 图中标志大小
"draggable": "False", # 是否可拖动
"value": 1, # 被再次转发次数
"category": "Camel3942", # 个人理解是需要填写根微博
"label": { # 此博主被再次转发后,含有此标签,否则不含
"normal": {
"show": "True"
}
}
},
每个节点的名称不可以重复,否则,将会显示空白
link
link是边的列表,包括转发来源与转发用户,即父节点和子节点
{
"source": "新浪体育",
"target": "Beijingold4"
}
category
category为类别的列表,在参考[5]的解释是“所有被二次转发过的博主昵称”,个人处理是取了其转发来源的根节点
{
"name": "Camel3942"
}
另外从github上找到weibo.json的原文件可以发现该列表还包含三个元素
因为没有用到,就把代码中的 cont, mid, userl删掉即可。
[1]Python:数据可视化pyecharts的使用,作者:JYRoy
[2]pyecharts 在地图上根据经纬度和量值,画出散点图/热力图
[3]pyecharts-gallery
[4]pyecharts graph(关系图) 官网例子weibo.json详解
[5]利用pyecharts绘制新浪微博传播图(文末附完整代码地址)