发布于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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!