使用总结:
参考:python 扁平列表转树状字典;python 中列表与树状结构的转换
- 要构造指定的json格式的数据:
- 格式如下。注意,data是一个列表,列表中即要求的json格式。
:::info 关键点。这次json数据的生成还是比较困难的。如:
data = [
{
'children':[
{'name': 'B'},
{
'children':[
{'children':[{'name':'I'}],'name':'E'},
{'name':'F'},
],
'name':'C',
},
{
'children':[
{'children':[{'name':'J'},{'name':'K'}],'name':'G'},
{'name':'H'},
],
'name':'D',
},
],
'name':'A',
}
]
首先,原先的数据是嵌套列表,里面每一个列表都是一个从祖宗到叶子节点的路径。
- 格式如下。注意,data是一个列表,列表中即要求的json格式。
- 首先将每个路径转化成:[{‘father’:’son’}, {‘son’, ‘son’s son’}…..]的形式
- 然后要合并嵌套列表中的所有路径,合并成如下格式:[{‘father’,’son1, son2,….’}, {‘son1’:’son11, son12, ….’}……]
- 合并成的格式即一个字典,字典中每个item是【父亲:其所有孩子】组成的键值对。这时使用递归,自顶向下构建pyecharts tree chart所要求的json格式。
- 其中需要用到【递归寻找name等于孩子名字的字典,为其添加孩子】 :::
然后调用pyecharts的方法进行渲染即可生成html文件
- 打开生成的html即可在网页中查看。
tree = (
Tree()
.add('', [t], collapse_interval=2)
.set_global_opts(title_opts=opts.TitleOpts(title='Tree-基本示例'))
)
tree.render()
- 打开生成的html即可在网页中查看。
使用时,不知如何调整高度,可以在IDE中打开生成的html文件
- 然后可以调整宽高
- 可以调整节点名字的显示位置(分为叶子节点和非叶子节点)
# 要修改的位置大致如下。
'series': [
'data': [{}]
# 非叶子节点
'label':{
'position': 'top'/'left'/... #
'fontSize': 16 # 节点名字的字体大小
}
# 叶子节点
'leaves':{
'laebel':{
'position':'top'/'left'/'right' # 即节点名字处于节点的哪里
}
}
]
基础知识
参考:pyecharts 树图 官方文档
新增树图,Issue(比较老了,有些方法运行报错);使用pyecharts绘制基本图形(二);小白学Python(14)——pyecharts 绘制树形图表 Tree
tree_symbol -> str
标记的图形。ECharts 提供的标记类型包括 ‘emptyCircle’, ‘circle’, ‘rect’, ‘roundRect’, ‘triangle’, ‘diamond’, ‘pin’, ‘arrow’, ‘none’。默认为 “emptyCircle”。踩到的坑及总结
将字典或字典的部分赋值给另一个变量,如果修改了另一个变量,则原字典也会被修改!
- 因此如果想复制一个字典,dict.copy()还不够,要用深拷贝,这样对复制后字典的修改才不会影响原字典。
dict1.update(dict2)import copy
dict1 = {}
dict2 = copy.deepcopy(dict1)
dict2 — 添加到指定字典dict里的字典。 ```python!/usr/bin/python
dict = {‘Name’: ‘Zara’, ‘Age’: 7} dict2 = {‘Sex’: ‘female’ }
dict.update(dict2) print “Value : %s” % dict
Value : {‘Age’: 7, ‘Name’: ‘Zara’, ‘Sex’: ‘female’}
FAQ
1、pyecharts渲染之后打开html显示空白的解决办法