ECharts 多仪表盘(自动)

 全部代码附结尾

  • 任务描述

仪表盘(Gauge)也被称为拔号图表或速度表图,用于显示类似于速度计上的读数的数据,是一种拟物化的展示形式。仪表盘是常用的商业智能(BI)类的图表之一。可以轻松展示用户的数据。并能清晰地展示出某个指标值所在范围。为了更直观地查看项目的实际完成率数据,以及汽车的速度、发动机的转速、油表和水表的现状等,需要在Echarts中绘制单仪表盘进行展示。

  • 案例描述

Echarts的主要创始者林峰表示,他在一次漫长的拥堵当中,有机会观察和思考仪表盘的问题,并突然意识到仪表盘不仅是在传达数据,还能传达出一种易于记忆的状态,并且影响人的情绪,这种正面或负面的情绪影响对决策运营有一定的帮助。

    仪表盘的颜色可以用于划分指标值的类别,而刻度标识、指针指示维度、指针角度则可用于表示数值。绘制仪表盘时,只需分配最小值和最大值,并定义一个颜色范围,指针将显示出关键指标的数据或当前进度。仪表盘可用于表示速度、体积、温度、进度、完成率、满意度等。

  •  实现步骤
  1. 引入echarts.js库文件
  2. 定义图表容器大小
  3. 初如化echarts实例对象
  4. 配置图表组件
 var option={

title:{

text:"成绩分析"

},

       series:[{name:'单仪表盘示例',

             type:'gauge',

             radius:'80%',

             center:["50%","55%"],

             startAngle:225,

             endAngle:-45,

             clockWise:true,

             min:0,

             max:100,

             data:[{

              name:'完成率(%)',

              value:70,

             }]

       

       }]

}
  • 主要参数讲解
  1.  startAngle:225 设置仪表盘起始角度(默认为225)
  2. endAngle:-45 设置仪表盘结束解度,默认为-45
  3. Type:’gauge’ 仪表盘
  4. Center 表示圆心坐标,它可以是像素点表示的绝对值,也可以是数组类型,默认值为【“50%”,”50%”】.百分比计算时按照公式min(width,height)*50%进行计算,其中的Width和height分别表示div中所设置的宽度和高度。
  5. radius表示半径,它可以是像素点表示绝对值,也可以是数组类型,默认值为’75%’,支持绝对值(PX)和百分比。百分比计算时按照公式min(width,height)/2*75%进行计算,其中width和height分别表示div中所设置的宽度和高度。
  6. clockWise设置仪表盘是否顺时针增长,默认为true,它是一个布尔类型,取值只有false和true.
  7. Min:0,设置最小的数据值,默认为0,映射到minAngle.
  8. Max:100,设置最大的数据值,默认为100,映射到maxAngle
  9.  每隔2称重新渲染一次以实现动态效果
setInterval(function(){

option.series[0].data[0].value=(Math.random()*100).toFixed(2);

mychart.setOption(option,true);

},2000);
  1. 仪表盘的美化
      axisLine:{}

      splitLine:{}

      axisTick:{}

      axisLable:{}

      Pointer:{}//设置仪表盘指针

      itemStyle:{}//设置仪表盘指针样式

      Emphasis:{}//设置高亮的仪表盘指针样式

      Detail:{}//设置仪表盘详情,用于显示数据

 全部代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>ECharts仪表盘练习</title>
    <script src="http://cdn.bootcss.com/echarts/4.8.0/echarts.js"></script>
</head>

<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 1400px;height:600px;"></div>
<script type="text/javascript">
    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'));

    // 指定图表的配置项和数据
    var option = {
/*        title: {
            // text: '业务指标', //标题文本内容
        },
        toolbox: { //可视化的工具箱
            show: true,
                        feature: {
                            restore: { //重置
                                show: true
                            },
                            saveAsImage: {//保存图片
                                show: true
                            }
                        }
        },
        tooltip: { //弹窗组件
            formatter: "{a} <br/>{b} : {c}"
        },*/
        series: [{//左边仪表盘
            // name: '业务指标',
            type: 'gauge',
            detail: {formatter:'{value}'},
            radius: "60%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。
            center:["25%","60%"],
            startAngle:220,
            endAngle:55,
            clockWise:true,
            min:0,
            max:7,
            splitNumber: 7,        // 仪表盘刻度的分割段数,默认 10。
            axisTick: {             // 刻度(线)样式。
                show: true,             // 是否显示刻度(线),默认 true。
                splitNumber: 5,         // 分隔线之间分割的刻度数,默认 5。
                length: 15,              // 刻度线长。支持相对半径的百分比,默认 8。
                lineStyle: {            // 刻度线样式。
                    color: "auto",              //线的颜色,默认 #eee。
                    opacity: 1,                 //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
                    width: 1,                   //线度,默认 1。
                    type: "solid",              //线的类型,默认 solid。 此外还有 dashed,dotted
                    // shadowBlur: 10,             //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
                    // shadowColor: "#fff",        //阴影颜色。支持的格式同color。
                },
            },
            axisLine: {             // 仪表盘轴线(轮廓线)相关配置。
                show: true,             // 是否显示仪表盘轴线(轮廓线),默认 true。
                lineStyle: {            // 仪表盘轴线样式。
                    // color: colorTemplate1,  //仪表盘的轴线可以被分成不同颜色的多段。每段的  结束位置(范围是[0,1]) 和  颜色  可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']]
                    // opacity: 1,                 //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
                    width: 10,                  //轴线宽度,默认 30。
                    // shadowBlur: 20,             //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
                    // shadowColor: "#fff",        //阴影颜色。支持的格式同color。
                }
            },
            splitLine: {            // 分隔线样式。
                show: true,             // 是否显示分隔线,默认 true。
                length: 20,             // 分隔线线长。支持相对半径的百分比,默认 30。
                lineStyle: {            // 分隔线样式。
                    color: "auto",              //线的颜色,默认 #eee。
                    opacity: 1,                 //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
                    width: 2,                   //线度,默认 2。
                    type: "solid",              //线的类型,默认 solid。 此外还有 dashed,dotted
                    // shadowBlur: 10,             //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
                    // shadowColor: "#fff",        //阴影颜色。支持的格式同color。
                }
            },
            title:{
                fontSize : 20,
                // offsetCenter : [0, '60%']//设置完成率位置
            },
            data: [{
                value: 4,
                name: '转速(x1000 r/min)'
            }],

        },
            {//中仪表盘
                // name: '业务指标',
                type: 'gauge',
                detail: {formatter:'{value}'},
                radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。
                center:["50%","55%"],
                startAngle:225,
                endAngle:-45,
                clockWise:true,
                min:0,
                max:220,
                splitNumber: 22,        // 仪表盘刻度的分割段数,默认 10。
                axisTick: {             // 刻度(线)样式。
                    show: true,             // 是否显示刻度(线),默认 true。
                    splitNumber: 5,         // 分隔线之间分割的刻度数,默认 5。
                    length: 15,              // 刻度线长。支持相对半径的百分比,默认 8。
                    lineStyle: {            // 刻度线样式。
                        color: "auto",              //线的颜色,默认 #eee。
                        opacity: 1,                 //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
                        width: 1,                   //线度,默认 1。
                        type: "solid",              //线的类型,默认 solid。 此外还有 dashed,dotted
                        // shadowBlur: 10,             //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
                        // shadowColor: "#fff",        //阴影颜色。支持的格式同color。
                    },
                },
                axisLine: {             // 仪表盘轴线(轮廓线)相关配置。
                    show: true,             // 是否显示仪表盘轴线(轮廓线),默认 true。
                    lineStyle: {            // 仪表盘轴线样式。
                        // color: colorTemplate1,  //仪表盘的轴线可以被分成不同颜色的多段。每段的  结束位置(范围是[0,1]) 和  颜色  可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']]
                        // opacity: 1,                 //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
                        width: 10,                  //轴线宽度,默认 30。
                        // shadowBlur: 20,             //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
                        // shadowColor: "#fff",        //阴影颜色。支持的格式同color。
                    }
                },
                splitLine: {            // 分隔线样式。
                    show: true,             // 是否显示分隔线,默认 true。
                    length: 20,             // 分隔线线长。支持相对半径的百分比,默认 30。
                    lineStyle: {            // 分隔线样式。
                        color: "auto",              //线的颜色,默认 #eee。
                        opacity: 1,                 //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
                        width: 2,                   //线度,默认 2。
                        type: "solid",              //线的类型,默认 solid。 此外还有 dashed,dotted
                        // shadowBlur: 10,             //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
                        // shadowColor: "#fff",        //阴影颜色。支持的格式同color。
                    }
                },
                title:{
                    fontSize : 25,
                    // offsetCenter : [0, '60%']//设置完成率位置
                },
                data: [{
                    value: 40,
                    name: '车速(km/h)'
                }]
            },
            {//右上边仪表盘
                name: '业务指标',
                type: 'gauge',
                radius: "40%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。
                center:["75%","60%"],
                startAngle:-230,
                endAngle:-310,
                clockWise:true,
                min:0,
                max:2,
                splitNumber: 2,        // 仪表盘刻度的分割段数,默认 10。
                axisTick: {             // 刻度(线)样式。
                    show: true,             // 是否显示刻度(线),默认 true。
                    splitNumber: 5,         // 分隔线之间分割的刻度数,默认 5。
                    length: 15,              // 刻度线长。支持相对半径的百分比,默认 8。
                    lineStyle: {            // 刻度线样式。
                        color: "auto",              //线的颜色,默认 #eee。
                        opacity: 1,                 //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
                        width: 1,                   //线度,默认 1。
                        type: "solid",              //线的类型,默认 solid。 此外还有 dashed,dotted
                        // shadowBlur: 10,             //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
                        // shadowColor: "#fff",        //阴影颜色。支持的格式同color。
                    },
                },
                axisLine: {             // 仪表盘轴线(轮廓线)相关配置。
                    show: true,             // 是否显示仪表盘轴线(轮廓线),默认 true。
                    lineStyle: {            // 仪表盘轴线样式。
                        // color: colorTemplate1,  //仪表盘的轴线可以被分成不同颜色的多段。每段的  结束位置(范围是[0,1]) 和  颜色  可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']]
                        // opacity: 1,                 //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
                        width: 10,                  //轴线宽度,默认 30。
                        // shadowBlur: 20,             //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
                        // shadowColor: "#fff",        //阴影颜色。支持的格式同color。
                    }
                },
                splitLine: {            // 分隔线样式。
                    show: true,             // 是否显示分隔线,默认 true。
                    length: 20,             // 分隔线线长。支持相对半径的百分比,默认 30。
                    lineStyle: {            // 分隔线样式。
                        color: "auto",              //线的颜色,默认 #eee。
                        opacity: 1,                 //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
                        width: 2,                   //线度,默认 2。
                        type: "solid",              //线的类型,默认 solid。 此外还有 dashed,dotted
                        // shadowBlur: 10,             //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
                        // shadowColor: "#fff",        //阴影颜色。支持的格式同color。
                    }
                },
                axisLabel: {
                    show: true,             // 是否显示标签,默认 true。
                    distance: 3,            // 标签与刻度线的距离,默认 5。
                    formatter: function (v) {
                        switch (v + '') {
                            case '0': return 'E';
                            case '1': return '油表';
                            case '2': return 'F';
                        }
                    }
                },
                title: { show: false },
                detail: { show: false },
                data: [{
                    value: 0.5,
                    name: '油表'
                }]
            },
            {//右下边仪表盘
                name: '业务指标',// 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。
                type: 'gauge',// 系列类型
                radius: "40%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。
                center:["75%","60%"],// 仪表盘位置(圆心坐标)
                startAngle:310,// 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。
                endAngle:230,// 仪表盘结束角度,默认 -45
                clockWise:true,// 仪表盘刻度是否是顺时针增长,默认 true。
                min:0,// 最小的数据值,默认 0 。映射到 minAngle。
                max:2,// 最大的数据值,默认 100 。映射到 maxAngle。
                splitNumber: 2,        // 仪表盘刻度的分割段数,默认 10。
                axisTick: {             // 刻度(线)样式。
                    show: false,             // 是否显示刻度(线),默认 true。
                },
                axisLine: {             // 仪表盘轴线(轮廓线)相关配置。
                    show: true,             // 是否显示仪表盘轴线(轮廓线),默认 true。
                    lineStyle: {            // 仪表盘轴线样式。
                        // color: colorTemplate1,  //仪表盘的轴线可以被分成不同颜色的多段。每段的  结束位置(范围是[0,1]) 和  颜色  可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']]
                        // opacity: 1,                 //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
                        width: 10,                  //轴线宽度,默认 30。
                        // shadowBlur: 20,             //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
                        // shadowColor: "#fff",        //阴影颜色。支持的格式同color。
                    }
                },
                splitLine: {            // 分隔线样式。
                    show: true,             // 是否显示分隔线,默认 true。
                    length: 20,             // 分隔线线长。支持相对半径的百分比,默认 30。
                    lineStyle: {            // 分隔线样式。
                        color: "auto",              //线的颜色,默认 #eee。
                        opacity: 1,                 //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
                        width: 2,                   //线度,默认 2。
                        type: "solid",              //线的类型,默认 solid。 此外还有 dashed,dotted
                        // shadowBlur: 10,             //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
                        // shadowColor: "#fff",        //阴影颜色。支持的格式同color。
                    }
                },
                axisLabel: {            // 刻度标签。
                    show: true,             // 是否显示标签,默认 true。
                    distance: 3,            // 标签与刻度线的距离,默认 5。
                    // color: "#fff",          // 文字的颜色,默认 #fff。
                    // fontSize: 12,           // 文字的字体大小,默认 5。
                    // formatter: "{value}",   // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';}
                    formatter: function (v) {
                        switch (v + '') {
                            case '0': return 'H';
                            case '1': return '水表';
                            case '2': return 'C';
                        }
                    }
                },
                title: { show: false },
                detail: { show: false },
                data: [{
                    value: 1,
                    name: "水表"
                }]

            }]

    };

    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);

    setInterval(function(){//把option.series[0].data[0].value的值使用random()方法获取一个随机数
        option.series[0].data[0].value = (Math.random() * 7).toFixed(2);
        option.series[1].data[0].value = (Math.random() * 100).toFixed(2);
        option.series[2].data[0].value = (Math.random() * 2).toFixed(2);
        option.series[3].data[0].value = (Math.random() * 2).toFixed(2);
        myChart.setOption(option, true);
    }, 2000);
</script>
</body>

</html>

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贫坤户~濰小城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值