• echarts玩转图表之矩形树图


    前言

    这是第一次用makedown编辑器写文章,感觉像一件利器,排版美观而且效率飙升。进入正题
    Echart官网文档地址
    针对于矩形树图api配置项链接

    1. 完全从数据定义图形

    $.get( "{% static 'json/rectTreeData.json' %}", function (obama_budget) {
        myChart.hideLoading();
    

    //obama_budget数据里面的参数可以决定option里面需要用到的参数,可以直接在后端完整定义这个data,来自定义前端显示的图形形状,pyecharts的实现应该也是这种思路,echarts的api接口不是对所有问题需求都是可以很好满足的,幸好这里图形配置项定义可以直接在从原始数据中操作,前端自定义可以用下面的方式
    第一种

    obama_budget[4]["itemStyle" ]= {    //
            color : '#0000ff',
            ...
        };
    

    第二种

    data.children[0].itemStyle = {
            color : '#0000ff',
            borderColor:'#0000ff'
            ...
        };
    

    后端自定义每个方块颜色可以这样实现

       rectDictnode["name"]=node[0]
       rectDictnode["value"]=nodebuf
       rectDictnode["absName"]=filedir+node[0]
       color=gerColorOfWeight(node[1][0],node[1][3])
       color1="rgb("+str(color['red'])+','+str(color['green'])+','+str(color['blue'])+')'
       #print(color1)
       rectDictnode["itemStyle"]={"color":color1 } 
    

    最终形成echarts中需要的格式就可以

     {
          value: [1212, 4943, 5453],
          absName:'root'
          name: 'description of this node',
          children: [...]
      },
    

    2. 利用Api配置项定义图表

    一些常用配置项代码中做注释:

        function isValidNumber(num) {
            return num != null && isFinite(num);
        }
     myChart.setOption(option = {
            title: {
                left: 'left',    //标题显示位置
                text: '缺陷分布',    //主标题,副标题
                subtext: '缺陷密度=缺陷数量/代码行数*1000 
    绿色表示该模块缺陷密度为0,红色越深的模块缺陷密度越大'
            },
            tooltip: {
                formatter: function (info) {    //自定义tooltip鼠标浮动提示,返回HTML
                    var value = info.value;
    
                    var lines = value[0];
                    lines = isValidNumber(lines)
                        ? echarts.format.addCommas(lines )
                        : '-';
    
                    var errors = value[1];
                    errors = isValidNumber(errors)
                        ? echarts.format.addCommas(errors) 
                        : '-';
    
                    var warningsOrWeight = value[2];
                    warningsOrWeight = isValidNumber(warningsOrWeight)
                        ? warningsOrWeight.toFixed(2) + '%'
                        : '-';
    
                    return [
                        '<div class="tooltip-title">' + echarts.format.encodeHTML(info.name) + '</div>',
                        '代码行数: &nbsp;&nbsp;' + lines + '<br>',
                        '缺陷数量: &nbsp;&nbsp;' + errors + '<br>',
                        '缺陷率: &nbsp;&nbsp;' + warningsOrWeight
                    ].join('');
                }
            },
            series: [{        
                name: 'root',    //这些配置项是对全局属性配置
                top: 80,
                type: 'treemap',    //树形图类型
                leafDepth: 1,   //一次下钻深度
                roam:'false',  //不能缩放平移
                label: {        //显示文字标签定义
                    show: true,
                    formatter: "{b}",    //定义显示的内容 {b}表示name
                    normal: {
                        textStyle: {
                            ellipsis: true    //圆角
                        }
                    }
                },
                itemStyle: {
                    normal: {
                        borderColor: 'black'    //方块分割边框颜色
                    }
                },
    

    borderWidth, gapWidth, borderColor 的解释
    边框参数关系

                visualDimension: 2, //指定2『视觉映射』使用的是value数组的第3项
                levels: [  //https://blog.csdn.net/dtq007/article/details/87879790
                
                    {   //钻入矩形树图的顶层
                       // colorSaturation: [0.1, 0.5],    //设置颜色饱和度
                        color:['#269f3c', '#ca6872','#942e38'], //颜色列表,对于定义每个分块颜色不太理想
                        colorMappingBy: 'value',    //颜色根据value设置
                        itemStyle: {
                            normal: {
                                borderWidth: 2,    //方块外边框粗细
                                borderColor: '#333',    //边框颜色
                                gapWidth: 1  //方块内部边框粗细
                            }
                        }
                    },
                    {   //钻入矩形树图的第二层
                        //color: ['#269f3c', '#ca6872','#942e38'],
                        //colorMappingBy: 'value',
                        itemStyle: {
                            normal: {
                                gapWidth: 1
                            }
                        }
                    },
                    {   //钻入矩形树图的第三层
                        //color: ['#269f3c', '#ca6872','#942e38'],
                       // colorMappingBy: 'value',
                        itemStyle: {
                            normal: {
                                borderWidth: 1,
                              
                            }
                        }
                    },
                    {   //钻入矩形树图的第四层,没有的话就不用写了
                        //color: ['#269f3c', '#ca6872','#942e38'],
                       // colorMappingBy: 'value',
                        itemStyle: {
                            normal: {
                                borderWidth: 1,
                              
                            }
                        }
                    }
                ],
                data: obama_budget        //设置数据来源
            }]
        });
    
    

    最终效果,自己定义每个小方块的颜色

    也将echarts矩形树图做成了我自已实现的树形图表的样子:

  • 相关阅读:
    unit 21
    unit 20
    unit 19
    第十八单元
    17 unit
    ES 中文分词
    ES 的CRUD 简单操作(小试牛刀)
    ES 必备插件的安装
    ES的安装运行
    JAVA_HOME 的设置
  • 原文地址:https://www.cnblogs.com/pozhu15/p/11914149.html
Copyright © 2020-2023  润新知