程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(1)

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

发布于2021-05-09 11:17     阅读(799)     评论(0)     点赞(25)     收藏(0)


背景

想学习用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的效果。
(比较考验电脑性能,一万个左右节点在我电脑上进行缩放和交互就有些卡顿了)
在这里插入图片描述

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

原文链接:https://blog.csdn.net/Parzival_/article/details/116240049



所属网站分类: 技术文章 > 博客

作者:我是小白兔

链接:https://www.pythonheidong.com/blog/article/965394/2b50068f8564ea9efa01/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

25 0
收藏该文
已收藏

评论内容:(最多支持255个字符)