美文网首页
编程大白话之-echsrts的使用需求记录

编程大白话之-echsrts的使用需求记录

作者: Han涛_ | 来源:发表于2020-08-27 16:35 被阅读0次

    记录一个需求吧,也希望有人能给出其它更好的方法。

    1.根据请求到的数据动态渲染echarts图形;
    2.有3个接口,第1个接口返回2个图形数据,其它各返回1个,共渲染出4个echarts图形;

    预览.gif

    (第1个图是有多条数据渲染,第2个图中数据仅有几条并且数据为0时,第3个图中是没有数据情况下的形态!)
    时间点和数据的数量要保持一致,否则数据默认是从第1时间点默认排列

    template公共部分
    
    标签公共组件.png
    data: {
      return {
        dataLIst: [] // 初始一个存放数据的数组
      }
    }
    
    第1个接口返回2个图形数据
    
    返回2个数据的接口.png
    返回1个数据的接口
    
    返回1个数据的接口.png
    拿到的数据与绘制echarts所需格式不同,分别调用了转换数据格式的方法
    this.dataFormat()
    
    数据格式转换.png
    转换为所需的格式后调用绘制echarts的准备方法
    this.initChartLine()
    

    对于在绘制图形时,对图形大小、颜色、参数的设置都可以在下面进行设置,有部分注释仅供参考

    绘制图形1.png 绘制图形2.png 绘制图形3.png

    因为我是共用的一个页面的标签,所以设置了不同id来进行获取,页面根据参数进行了遍历。按照上面的步骤,echarts就应该绘制出来了!

    说一下我的数据格式转换的前后不同,高亮部分是请求到的数据格式,而echarts要使用的是注释部分的格式,需对其进行转换。

    格式数据转换.png
    let result = [];
            for (let v of items1) {
                let values = v.value;
                if (values.length && Array.isArray(values)) {
                    for (let i of values) {
                        const existenceIndex = result.findIndex(item => item.name === i.name);
                        if (result[existenceIndex]) {
                            result[existenceIndex].data.push(i.value);
                        } else {
                            result.push({
                                name: i.name,
                                data: [i.value]
                            });
                        }
                    }
                }
            }
    

    下面说一下图形中线条颜色的修改

    每条数据中的参数设置,可修改线颜色
    series: [
           
            {
                name:'近七日收益',
                type:'line',
                areaStyle: {
                    normal: {
                        color: '#091e3b' //改变区域颜色
                    }
                },
                itemStyle: {
                    normal: {
                        color: '#8cd5c2', //改变折线点的颜色
                        lineStyle: {
                            color: '#8cd5c2' //改变折线颜色
                        }
                    }
                },
                stack: '总量',
                data:["91","29","93","64","105"]
            }
        ]
    

    1.默认echarts提供的颜色,最多是11种


    image.png

    2.这个是图例较多时的例子,通过注释掉type:scroll这句,可以看到右侧的图例中,颜色出现重复的情况


    image.png

    3.这里我们使用hsl定义颜色
    先看下hsl的定义及设置


    image.png

    4.先设置一个简单的colorList,查看一下色调、饱和度、亮度的值对颜色的影响


    image.png

    5.我们就是通过程序,自动调整色调、饱和度、亮度这三个值,然后实现不同颜色的显示。当饱和度、亮度大于80或小于30会偏亮或偏暗,所以这里饱和度、亮度的取值在30到80之间

    从运行结果可以看出,颜色已经不重复了


    image.png

    在测试过程中遇到一个问题如图:

    数据太多重叠.png

    由于返回的数据类型太多,导致文字与图形重叠,本想将echarts模块的高度设置为自适应,我页面有多个不同的echarts,而且相对应右边有element的消息列表也要设为动态,整个页面出来以后,大小混乱,最后无奈在grid中添加top的高度,同样数据不能太多,否则图形会挤压的无法观看

    grid: {
      top: result.length + 12+ '%', // result是返回数据类型的数组
      left: '4%',
      right: '4%',
      bottom: '6%',
      containLabel: true
    }
    

    希望可以给出更好的方法或建议!

    相关文章

      网友评论

          本文标题:编程大白话之-echsrts的使用需求记录

          本文链接:https://www.haomeiwen.com/subject/vehcsktx.html