使用总结:

参考:python 扁平列表转树状字典python 中列表与树状结构的转换

  • 要构造指定的json格式的数据:
    • 格式如下。注意,data是一个列表,列表中即要求的json格式。
      1. 如:
      2. data = [
      3. {
      4. 'children':[
      5. {'name': 'B'},
      6. {
      7. 'children':[
      8. {'children':[{'name':'I'}],'name':'E'},
      9. {'name':'F'},
      10. ],
      11. 'name':'C',
      12. },
      13. {
      14. 'children':[
      15. {'children':[{'name':'J'},{'name':'K'}],'name':'G'},
      16. {'name':'H'},
      17. ],
      18. 'name':'D',
      19. },
      20. ],
      21. 'name':'A',
      22. }
      23. ]
      :::info 关键点。这次json数据的生成还是比较困难的。
      首先,原先的数据是嵌套列表,里面每一个列表都是一个从祖宗到叶子节点的路径。
  1. 首先将每个路径转化成:[{‘father’:’son’}, {‘son’, ‘son’s son’}…..]的形式
  2. 然后要合并嵌套列表中的所有路径,合并成如下格式:[{‘father’,’son1, son2,….’}, {‘son1’:’son11, son12, ….’}……]
  3. 合并成的格式即一个字典,字典中每个item是【父亲:其所有孩子】组成的键值对。这时使用递归,自顶向下构建pyecharts tree chart所要求的json格式。
    1. 其中需要用到【递归寻找name等于孩子名字的字典,为其添加孩子】 :::
  • 然后调用pyecharts的方法进行渲染即可生成html文件

    • 打开生成的html即可在网页中查看。
      1. tree = (
      2. Tree()
      3. .add('', [t], collapse_interval=2)
      4. .set_global_opts(title_opts=opts.TitleOpts(title='Tree-基本示例'))
      5. )
      6. tree.render()
  • 使用时,不知如何调整高度,可以在IDE中打开生成的html文件

    • 然后可以调整宽高
    • 可以调整节点名字的显示位置(分为叶子节点和非叶子节点)
      1. # 要修改的位置大致如下。
      2. 'series': [
      3. 'data': [{}]
      4. # 非叶子节点
      5. 'label':{
      6. 'position': 'top'/'left'/... #
      7. 'fontSize': 16 # 节点名字的字体大小
      8. }
      9. # 叶子节点
      10. 'leaves':{
      11. 'laebel':{
      12. 'position':'top'/'left'/'right' # 即节点名字处于节点的哪里
      13. }
      14. }
      15. ]

基础知识

参考:pyecharts 树图 官方文档
新增树图,Issue(比较老了,有些方法运行报错);使用pyecharts绘制基本图形(二)小白学Python(14)——pyecharts 绘制树形图表 Tree

  • tree_symbol -> str
    标记的图形。ECharts 提供的标记类型包括 ‘emptyCircle’, ‘circle’, ‘rect’, ‘roundRect’, ‘triangle’, ‘diamond’, ‘pin’, ‘arrow’, ‘none’。默认为 “emptyCircle”。

    踩到的坑及总结

  • 将字典或字典的部分赋值给另一个变量,如果修改了另一个变量,则原字典也会被修改!

  • 因此如果想复制一个字典,dict.copy()还不够,要用深拷贝,这样对复制后字典的修改才不会影响原字典。
    1. import copy
    2. dict1 = {}
    3. dict2 = copy.deepcopy(dict1)
    dict1.update(dict2)
    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显示空白的解决办法

自己使用的效果展示

image.png