python生成树形图_如何使用Python生成树形图(treemap)所需数据
被这个问题稍微难住了下,找到答案后不敢独享,希望能帮助其他朋友吧。
raw_data = [
("A1", "B1", "C1", 1),
("A1", "B1", "C1", 1),
("A1", "B1", "C2", 1),
("A1", "B2", "C1", 1),
("A1", "B2", "C1", 1),
("A1", "B2", "C2", 1),
("A1", "B2", "C2", 1),
("A2", "B1", "C1", 1),
("A2", "B1", "C1", 1),
("A2", "B1", "C2", 1),
("A2", "B1", "C2", 1),
("A2", "B2", "C1", 1),
("A2", "B2", "C1", 1),
("A2", "B2", "C2", 1),
("A2", "B2", "C2", 1)
]
那么我们可以使用以下代码生成树形图中所需的data数据
# Autovivification
# https://en.wikipedia.org/wiki/Autovivification
class Tree(dict):
def __missing__(self, key):
value = self[key] = type(self)()
return value
tree = Tree()
for x, y, z, value in raw_data:
tree[x][y][z] = value
def walk_tree(tree):
for k, v in tree.items():
if isinstance(v, dict):
value_list = list(walk_tree(v))
result = {
"name": k,
"children": [x for x in value_list],
"value": sum([x['value'] for x in value_list])
}
yield result
else:
yield {"name": k, "value": float(v)}
data = [x for x in walk_tree(tree)]
结果如下,其中父级数据值会自动汇总
[{'children': [{'children': [{'value': 1.0, 'name': 'C1'}, {'value': 1.0, 'name': 'C2'}], 'value': 2.0, 'name': 'B2'}, {'children': [{'value': 1.0, 'name': 'C1'}, {'value': 1.0, 'name': 'C2'}], 'value': 2.0, 'name': 'B1'}], 'value': 4.0, 'name': 'A1'}, {'children': [{'children': [{'value': 1.0, 'name': 'C1'}, {'value': 1.0, 'name': 'C2'}], 'value': 2.0, 'name': 'B2'}, {'children': [{'value': 1.0, 'name': 'C1'}, {'value': 1.0, 'name': 'C2'}], 'value': 2.0, 'name': 'B1'}], 'value': 4.0, 'name': 'A2'}]
有了data数据后,在拼一个echarts的option就不是难事了,代码就不贴了。
总结:Autovivification这个单词是解决问题的钥匙。
python生成树形图_如何使用Python生成树形图(treemap)所需数据相关推荐
- python从random生成列表_详解Python利用random生成一个列表内的随机数
详解Python利用random生成一个列表内的随机数 首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range ...
- python输出古诗词_使用LSTM训练生成古诗模型,其中生成器可以指定生成风格进行输出...
RNNPoet项目 相关文章 项目介绍 文字预处理脚本介绍 梯度处理函数介绍 1.文件简介 LSTM_model.py:LSTM网络模型,提供了end_points接口,被其他部分调用 poetry_ ...
- python神经网络风格_[Deep-Learning-with-Python]使用LSTM生成尼采风格文章
github地址repos LSTM生成文本 使用循环神经网络生成序列文本数据.循环神经网络可以用来生成音乐.图像作品.语音.对话系统对话等等. 如何生成序列数据? 深度学习中最常见的方法是训练一个网 ...
- python len函数_知识清单Python必备的69个函数,你掌握了吗?
本文纲要 Python 作为一门高级编程语言,为我们提供了许多方便易用的内置函数,节省了不少开发应用的时间.目前,Python 3.7 共有 69 个内置函数,一些是我们耳熟能详的函数,另一些却不是很 ...
- python优化网站_[练习] 用PYTHON来优化网站中的图片
我到公司以来,第一次加班,哇,加一晚上加一上午,现在还没下班的迹象,555,困. 对于网站中的一些关键的页面,多重缓存.静态化.程序代码优化--之外,为了提高用户打开页面的速度,图片是必须要优化的. ...
- python是什么编程教程-编程python是什么_谁的Python教程最好?
谁的Python教程最好? 建议你可以看看这里的<Python基础教程>和<Python学习手册>应该适合你的. 希望对你有用. 记得采纳呀~ Python中的9个代码小实例! ...
- python框架大全_常用的Python开源框架有哪些?列举这3个
随着人工智能快速发展,不仅在各个领域应用日益广泛,同时也引发了教学内容的变革和创新.人工智能的火热得益于成功的开源以及深度学习框架的不断涌现.而Python作为一种脚本语言,具有易学.易维护等优点,它 ...
- python 判断类型_青少年之Python编程课程安排lt;第一季gt;
第一章 开启Python之旅 1. 你将了解什么是Python 2. 在电脑上安装并简单使用Python 3. 开始通过Python与计算机进行交流(编程) 第二章 变量 1. ...
- python编写函数_如何用Python编写自己喜欢的R函数
python编写函数 数据科学和机器学习的伟大现代斗争之一是" Python vs. R". 毫无疑问,近年来两者都已经取得了巨大的发展,成为数据科学,预测分析和机器学习的顶级编程 ...
- python 生成器 原理_你知道python中的函数、生成器的工作原理吗?
1.python中函数的工作原理 python的解释器,也就是python.exe(c编写)会用PyEval_EvalFramEx(c函数)运行foo()函数 首先会创建一个栈帧(stack Fram ...
最新文章
- 华为全球最快AI训练集群Atlas 900诞生
- LINUX PAM验证机制
- yarn 更新_YARN-HA配置
- HDU5773-The All-purpose Zero-多校#41010-最长上升子序列问题
- Opencv EmguCv 基本识别步骤
- 【CodeForces - 987C 】Three displays (dp,最长上升子序列类问题,三元组问题)
- Oracle中通过游标执行带参数的存储过程实现解析CLOB字段内的xml字符串:
- python游戏入门书籍推荐
- 全新液体镜头专利曝光:华为P50系列拍照对焦速度堪比人眼
- horizon服务主要模块_Openstack入门篇(十四)之horizon服务的部署与测试
- 开源 Android pdf 阅读器开发总结
- 单机 docker 部署fastfds_云服务器使用docker可视化一键部署Wrodpress个人博客,操作简单,适合小白...
- tensorflow学习之常用函数总结:tensorflow.cast()函数
- android space边框,Android中的图片视图的边框?
- Spring Cloud Zuul网关集成JWT身份验证学习总结
- 360浏览器网页无法连接服务器,360浏览器打不开网页的解决方法教程
- 两台计算机如何共享文档,两台电脑如何共享文件
- 红米k50电竞版和红米k40游戏增强版哪个好 参数对比
- python出错 unexpected keyword argument 'categories'
- 解决ubantu里面报错findfont: Font family ['sans-serif'] not found. Falling back to Bitstream Vera Sans
热门文章
- 第一本书《java面向对象总结》
- 有线电视光端机/射频光端机技术问答
- 气泡文字php,CSS3 巧妙实现聊天气泡
- oracle 数据库密码 特殊字符,【案例】Oracle用户密码含特殊字符$ 登录数据库时异常案例...
- MATLAB反幂法求矩阵最小特征值及其特征向量
- C++类成员函数转换成函数对象
- react和vue原理与比较
- 安卓专属刺激战场M416二、三指灵敏度,网友:配合6倍镜压枪简直太爽了
- Android 7.0 预览版发布了
- qt linux 修改系统时间,linux改变系统时间