饼图和柱状图

  initEchart(data){
       // data={
      //   rate: {failed: [0, '0.0%'], running: [0, '0.0%'], unknown: [0, '0.0%'], pending: [0, '0.0%'],successed: [0, '0.0%']},
      //   summary_count: 0
      // }     
      this.echart_order = echarts.init(document.getElementById('echart_order'))
      let totalCount = data.summary_count
      let legendData = ['成功','初始化','创建中','失败','未知数']
      let state_mapping={
        'failed':'失败',
        'successed':'成功',
        'running':'创建中',
        'pending':'初始化',
        'unknown':'未知数',
      }
      let pmTypeData = []
      if(data.rate){
        pmTypeData= Object.keys(data.rate).map(item=>{
          return {
            name:state_mapping[item],
            value:data.rate[item][0]
          }
        })
      }
     
      let option = {
        tooltip: {
          trigger: 'item',
          formatter: '{b}<br/> {c}个 ({d}%)'
        },
        color,
        legend:{
          orient: 'vertical',
          itemHeight: 10,
          padding: 10 ,
          icon:'circle',
          align: 'auto',
          top:'middle',
          right:'30px',
          data: legendData,
          formatter:(name)=>{
            var data = pmTypeData
            var tarValue = data.find(item=>item.name === name).value
            return  '{a|'+name+'}' + ': ' + ' ' +'{b|'+ tarValue +'个'+'}'
          },
          textStyle:{
            rich:{
              a:{
                fontSize:12,
                fontFamily:'PingFangSC-Regular,PingFang SC',
                fontWeight:400,
                color:'#888888'
              },
              b:{
                width:55,
                fontSize:12,
                fontFamily:'PingFangSC-Regular,PingFang SC',
                fontWeight:400,
                color:'#353535',
              }
            }
          }
        },
        series: [
          {
            type: 'pie',
            radius:['50%', '64%'],
            center: ['40%', '50%'],
            circlePoition:'center',
            width:183,
            height:183,
            avoidLabelOverlap: false,
            label: {
              normal: {
                show: true,
                position: 'center',
                formatter: `{a|${totalCount}个}`,
                textStyle: {
                  rich: {
                    a:{
                      fontSize:14,
                      fontFamily:'PingFangSC-Semibold,PingFang SC',
                      fontWeight:'normal',
                      color:'#000000',
                    }
                  }
                }
              }
            },
            data: pmTypeData
          }
        ]
      }
    
      this.echart_order.setOption(option)
      window.addEventListener('resize', () => { 
        this.echart_order.resize()
      })
    },
    initTrendEchart(data){
      let failedList =[],pendingList=[],runningList = [],successedList =[],unknownList=[],totalList=[]
      let failedRatio =[],pendingRatio=[],runningRatio = [],successedRatio =[],unknownRatio =[]
      let totalCount = []
      data.forEach(item=>{
        failedList.push(item.summary_data.rate && item.summary_data.rate.failed ? item.summary_data.rate.failed[0] : 0 )
        pendingList.push(item.summary_data.rate && item.summary_data.rate.pending ? item.summary_data.rate.pending[0] : 0 )
        runningList.push(item.summary_data.rate && item.summary_data.rate.running ? item.summary_data.rate.running[0] : 0 )
        successedList.push(item.summary_data.rate && item.summary_data.rate.successed ? item.summary_data.rate.successed[0] : 0 )
        unknownList.push(item.summary_data.rate && item.summary_data.rate.unknown? item.summary_data.rate.unknown[0] : 0 )
        totalList.push(item.summary_data.rate && item.summary_data.rate.successed  ? item.summary_data.rate.successed[1].replace(/%/,'') : 0)
        failedRatio.push(item.summary_data.rate && item.summary_data.rate.failed  ? item.summary_data.rate.failed[1] : '0%')
        pendingRatio.push(item.summary_data.rate && item.summary_data.rate.pending  ? item.summary_data.rate.pending[1] : '0%')
        runningRatio.push(item.summary_data.rate && item.summary_data.rate.running  ? item.summary_data.rate.running[1] : '0%')
        successedRatio.push(item.summary_data.rate && item.summary_data.rate.successed  ? item.summary_data.rate.successed[1] : '0%')
        unknownRatio.push(item.summary_data.rate && item.summary_data.rate.unknown  ? item.summary_data.rate.unknown[1] : '0%')
        totalCount.push(item.summary_data.summary_count)  
      })
      this.echart_trend = echarts.init(document.getElementById('echart_trend'))
      let x_data = data.map(item=>{
        return item.date
      })
      let option = {
        tooltip: {
          trigger: 'axis',
          axisPointer: {
          },
          formatter(item){
            let result = item[0].axisValue + '<br>'
            for (let i = 0; i < item.length; i++) {
              if (item[i].seriesName === '成功率') {
                result+= ''
              }else if(item[i].seriesName === '成功'){
                result+= `<div style="display: inline-block; width: 10px; height: 10px; background:${item[i].color}; border-radius: 10px"></div>`+ ' '+item[i].seriesName +':'+ ' ' + item[i].value + '个' + ' '+'('+successedRatio[item[i].dataIndex]+')'+ '<br>'
              }else if(item[i].seriesName === '初始化'){
                result+= `<div style="display: inline-block; width: 10px; height: 10px; background:${item[i].color}; border-radius: 10px"></div>`+ ' '+item[i].seriesName +':'+ ' ' + item[i].value + '个' + ' '+'('+pendingRatio[item[i].dataIndex]+')'+ '<br>'
              }else if(item[i].seriesName === '创建中'){
                result+= `<div style="display: inline-block; width: 10px; height: 10px; background:${item[i].color}; border-radius: 10px"></div>`+ ' '+item[i].seriesName +':'+ ' ' + item[i].value + '个' + ' '+'('+runningRatio[item[i].dataIndex]+')'+ '<br>'
              }else if(item[i].seriesName === '失败'){
                result+= `<div style="display: inline-block; width: 10px; height: 10px; background:${item[i].color}; border-radius: 10px"></div>`+ ' '+item[i].seriesName +':'+ ' ' + item[i].value + '个' + ' '+'('+failedRatio[item[i].dataIndex]+')'+ '<br>'
              }else if(item[i].seriesName === '未知数'){
                result+= `<div style="display: inline-block; width: 10px; height: 10px; background:${item[i].color}; border-radius: 10px"></div>`+ ' '+item[i].seriesName +':'+ ' ' + item[i].value + '个' + ' '+'('+unknownRatio[item[i].dataIndex]+')'+ '<br>'
              }
              else{
                result+= '<div style="display: none;"></div>'
              }
            }
            return result
          }
        },
        legend: {
          data: ['成功','初始化','创建中','失败','未知数','成功率']
        },
        xAxis: [
          {
            type: 'category',
            axisLabel: {
              // interval:0 //强制显示横坐标
            },
            data: x_data,
            axisPointer: {
              // type: 'shadow'
            }
          }
        ],
        barWidth: '20%',
        yAxis: [
          {
            type: 'value',
            axisLabel: {
              formatter: '{value}'
            },
            splitLine: {
              lineStyle: {
                type: 'solid'
              }
            }
          },
          {
            type: 'value',
            axisLabel: {
              formatter: '{value}%'
            },
            splitLine:{
              show:false//不显示分隔线
            }
          }
        ],  
        series: [
          {
            name: '成功',
            type: 'bar',
            stack: 'total',
            color:'#7ab0fe',
            data: successedList
          },
          {
            name: '初始化',
            type: 'bar',
            stack: 'total',
            color:'#5bcfc2',
            data: pendingList
          },
          {
            name: '创建中',
            type: 'bar',
            stack: 'total',
            color:'#fff59c',
            data: runningList
          },
          {
            name: '失败',
            type: 'bar',
            stack: 'total',
            color:'#f88e80',
            data: failedList
          },
          {
            name: '未知数',
            type: 'bar',
            stack: 'total',
            color:'#f8b974',
            data: unknownList
          },
          {
            name: '统计',
            type: 'bar',
            stack: 'total',
            data: [0, 0, 0, 0, 0, 0, 0], //模拟数据
            label: {
              normal: {
                show: true,
                position: 'top',
                formatter: function (params) {
                  return totalCount[params.dataIndex]
                },
                textStyle: { 
                  color: 'black',
                  fontSize: 12,
                }
              }
            }
          },
          {
            name: '成功率',
            type: 'line',
            yAxisIndex: 1,
            color:'#0080FF',
            data: totalList
          }
        ]
      }
      this.echart_trend.setOption(option)
      window.addEventListener('resize', () => { 
        this.echart_trend.resize()
      })
    },
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,858评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,372评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,282评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,842评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,857评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,679评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,406评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,311评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,767评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,945评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,090评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,785评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,420评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,988评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,101评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,298评论 3 372
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,033评论 2 355

推荐阅读更多精彩内容