Echars仪表盘、饼图、柱形图的动态数据添加,以及柱形图改变颜色

本文介绍了如何在Echarts中实现仪表盘、饼图和柱形图的动态数据展示,包括鼠标交互效果。重点在于数据处理,无论是单个还是多个图表,都需要循环插入数据和名称。通过循环显示的方法,将数据处理后赋予图表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.仪表盘

html页面布局

 <div class="col-lg-4">
        <!-- sparkline stats -->
        <section class="panel">
          <header class="panel-heading">
            <span>隐患消除情况</span>
          </header>
          <div id="Chart1" style="height: 300px;"></div>
        </section>
      </div>
       <div class="col-lg-4">
        <!-- sparkline stats -->
        <section class="panel">
          <header class="panel-heading">
            <span>隐患数目统计(按风险级别)</span>
          </header>
          <div id="Chart3" style="height: 300px;"></div>
        </section>
      </div>
       <div class="col-lg-12">
        <!-- sparkline stats -->
        <section class="panel">
          <header class="panel-heading">
            <span>本年度各项目隐患情况</span>
          </header>
            <div id="Chart4" style="height: 300px;"></div>
        </section>
      </div>

在这里插入图片描述仪表盘两个显示,并动态显示数据。

//在option最下面进行初始化
        var myChart1 = echarts.init(document.getElementById('Chart1'));
 $.ajax({
      type: "get",
      dataType:"json",
      url: "/dangerinformaticas/general", //获取json数据
      success: function (data) {
      //后台获取动态数据
        //mychars1
        //这里的名字是显示在仪表盘上面的
        var nameList=["消除率","及时率"];
        //将名字进行json格式转换
        JSON.stringify(nameList).toString();
        //这里是查询到的数据,取数据对仪表盘的动态数据赋值
        var math=data[4]/data[5]*100;
        var math1=data[3]/data[5]*100;
        //创建新的数组,将仪表盘的动态显示数据添加进去
        var datas=new Array();
        datas.push(math,math1);
        //这里定义的数组是仪表盘的数组,向数组中进行push仪表盘
        var seriesArray =new Array();
        //开始循环动态数据
        for(var i=0;i<datas.length;i++){
        //设置仪表盘在div中的位置
          center = i*50+25;
          center1=50
          size = 100;
          //仪表盘进行push,以下是仪表盘的样式
          seriesArray.push({
            name: '1',
            type: 'gauge',//echars仪表盘
            radius: '50%',
            center: [center+'%', center1+'%'], // 默认全局居中
            splitNumber: 10,
            axisLine: { // 坐标轴线
              lineStyle: { // 属性lineStyle控制线条样式
                color: [
                  [60 / 100, '#00cc99'],//根据实际数据动态改变
                  [1, '#e5fff9'],

                ],
                width: 8, //半径
                shadowColor: '#fff', //默认透明
                shadowBlur: 1
              }
            },
            pointer: {
              show:false
            },
            axisLabel: {// 坐标刻度数字
              show:false,

            },
            axisTick: { // 坐标轴小标记
              show: false
            },
            splitLine: { // 分隔线
              show: false
            },
            legend: {
              data:['业务指标']
            },
            detail: { //show : true ,
              formatter: '{value}%',
              offsetCenter: [0, '5%'],
              textStyle: {
                color: '#00cc99',
                fontSize: 30
              }
            },
             //循环进行填入数据
            data:[{name:nameList[i],value:datas[i]}]
          });

        }
          //option的设置
        var option1 = {
          series : seriesArray
        };
          //可以对option进行重新设置
        myChart1.setOption(option1,true);
        

2.饼状图显示

在这里插入图片描述鼠标放在上面的效果
在这里插入图片描述

  //mychars3
  //初始化
    var myChart3 = echarts.init(document.getElementById('Chart3'));
  //因为对同一请求的数据进行处理,直接写在了一个ajax中
        if(data){
        //鼠标放上去后显示的那个字段信息
          var nameList3=["I级重大事故风险","II级重大事故风险","一般事故隐患"];
          JSON.stringify(nameList3).toString();
          var newData3=new Array();
          //将需要的数据push到数组中,这里的数据要和namelist3一一对应的
          newData3.push(data[0],data[1],data[2]);
          //循环进行设计str
          var str=new Array();
          for(var i=0;i<nameList3.length;i++){
            var str3=new Object();
            str3.name=nameList3[i];
            str3.value=data[i];
            str.push(str3);
          }
          myChart3.setOption({
            series:{
              name:['隐患数目'],
              data:str
            }
          })
        }
  //myChart3
  //样式的设置
  option3 = {
    tooltip : {
      trigger: 'item',
      formatter: "{a} <br/>{b} : {c} ({d}%)"
    },
    legend: {
      orient: 'horizontal',
      data: ['I级重大事故风险','II级重大事故风险','一般事故隐患']//显示在上面的颜色表示
    },
    series : [
      {
        name: '隐患数目',//鼠标点击出来的字段标识
        type: 'pie',
        radius : '55%',
        center: ['50%', '60%'],
        data:[],
        itemStyle: {
          emphasis: {
            shadowBlur: 10,
            shadowOffsetX: 0,
            shadowColor: 'rgba(0, 0, 0, 0.5)'
          }
        }
      }
    ],
    color:[
      '#69beff','#8fc31f','#f35833'
    ]//这里的颜色是进行顺序显示的,不是柱形图那样按下标来的
  };
  myChart3.setOption(option3);

3.柱形图显示

在这里插入图片描述

  var myChart4 = echarts.init(document.getElementById('Chart4'));
 $.ajax({
      type: "get",
      dataType:"json",
      url: "/dangerinformaticas/groupCount/getOne?dProjectId="+dProjectId, //获取json数据
      success: function (data) {
        console.log(data)
        var nameList4=["处理中","已消除","及时消除","隐患总数","消除率","及时消除率"];
        JSON.stringify(nameList4).toString();
        //data的数据的处理
        var newData4=new Array();
        var handleNow=data[5]-data[4];
        var handleAgain=data[4]/data[5]*100;
        var handleOntime=data[3]/data[4]*100;
  newData4.push(handleNow,data[4],data[3],data[5],handleAgain,handleOntime);
        var strs=new Array();
        for(var i=0;i<nameList4.length;i++){
          var str4=new Object();
          str4.name=nameList4[i];
          str4.value=newData4[i];
          strs.push(str4);
          }
        myChart4.setOption({
          series:{
            name:['隐患数目'],
            data:strs
            }
          })
      },
    });
 //myChart4
  option4 = {
    tooltip: {
      trigger: 'axis',
    },
    legend: {
      data:['处理中','已消除','及时消除','隐患总数','消除率','及时消除率']
    },
    xAxis: [
      {
        type: 'category',
        data: ['处理中','已消除','及时消除','隐患总数','消除率','及时消除率'],
        axisPointer: {
          type: 'shadow'
        },
        "axisLabel": {
          "rotate": 45,
          "interval": 0
        }
      }
    ],
    yAxis: [
      {
        type: 'value',
        name: '数量',
        splitLine: {
          "show": false
        },
        splitArea: {
          "show": false
        },
        min: 0,
        max: 50,
        interval: 10
      },
      {
        type: 'value',
        name: '效率',
        splitLine: {
          "show": false
        },
        splitArea: {
          "show": false
        },
        min: 0,
        max: 100,
        interval: 20,
        axisLabel: {
          formatter: '{value}%'
        }
      }
    ],
    series: [
      {
        name:'',
        type:'bar',
        barWidth:'50',
        itemStyle:{
          normal: {//颜色的显示设置
            color:function (params) {
              var colorList = ['#f54882','#47d1de','#8058bd','#ffd84f','#47d1de','#f54882'];
              return colorList[params.dataIndex];
            }
          }
        },
        label: {
          normal: {
            show: true,
            position: 'top',
            textStyle: {
              color: '#69beff'
            }
          }
        },
        data:[]
      },
    ]
  };
  myChart4.setOption(option4);

总结:echars的这三种展示,数据处理其实差不多,对于单个的都是进行数据和名字的循环插入,要是一个div中显示多个,那只能是用数组来进行单个添加,数据也是进行单个显示。将数据处理好,data给空,写方法循环显示就行。
在这里插入图片描述
码出未来!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值