「Python数据分析」pyechart绘制网络图

背景

想学习用pyechart画网络图(Graph)。
参考:
官方文档
https://pyecharts.org/#/zh-cn/intro
官方示例:
https://github.com/pyecharts/pyecharts-gallery

遇到的第一个问题:

运行不报错,但是打开生成的html,标题可以显示,没有图形。
查找资料发现可能是因为找不到静态资源文件
这个问题参照官方文档就可以解决资源引用
其中,pyecharts-assets 项目保存到能找得到的文件夹都行(最好在自己常用的画图文件夹下,方便找)。HTTP file server在系统终端启动(在IDE终端启动没反应),之后每次从这个文件服务器取数据终端都会有一行输出。
在这里插入图片描述

遇到的第二个问题:

上述操作成功之后,图形依然没出来。
也就是说,有了依赖的资源,还是画不出来,所以应该是代码本身也有问题
经过各种尝试,发现是opt.GraphNode的category这个参数用的不对。我给每个节点设置了分类,但是在绘图时Graph.add()中没有配置categories参数,导致渲染时并不明确有哪些类型的节点,分别应该绘制成什么样。

# 节点配置语句
nodes_data.append(opts.GraphNode(name=node,symbol_size=10,value=node,category=_type))

# 图中的配置
c = (
        Graph(init_ops)
            .add(
            "",
            nodes_data,
            links_data,
            # ...其他配置省略
            # (之前没写的部分)指定每个类别节点的配置
            # 只指定name则会按照当前主题的默认样式配置各个类别节点
            categories = [{
				name:"type1"
				},
				{
				name:"type2"
				},]
        )
遇到的第三个问题

这样终于打开html可以看到图了!
但是用大一点的数据(一万多个节点)画图时,导出的html文件(才二十M)加载不出来。
这不太对劲,因为之前画别的图,六七十M的html也能打开。
我试着把opt.InitOpts()里的renderer="svg"删了,也就是改用默认的“canvas”。导出的文件大小没变,但是打开文件后,浏览器渲染很快就完成了。

关于svg和canvas的区别目前学习了一下,但感觉理解的还不透彻,在这里就不多写了。不过可以明确的是,由于canvas是位图,像素级的渲染,不涉及到DOM,所以对于大数据量的情况渲染速度更快。svg由于是矢量图,操作对象是元素,所以在静态图片放大缩小时不会失真(比如地图),但由于DOM的使用,对于复杂大数据的渲染会比较慢。

效果图

这是使用默认的力引导布局,筛出了大概1000个节点做的demo的效果。
(比较考验电脑性能,一万个左右节点在我电脑上进行缩放和交互就有些卡顿了)
在这里插入图片描述

抓紧时间去学习啦,代码如果有需要我再整理吧。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值