echarts记录篇(五):关于饼图及柱状图tooltip数据formater自定义;及Y轴坐标数据间隔

一.柱状图例颜色+图例名称自定义写死的写法

(data) => {
    console.log("data:")
    console.log( data);
 if(data){
    var bw = 30;
    var itemGap = 10;
    var categories1 = [];
    var categories2 = [];
    var categories3 = [];
    var categories4 = [];
    var categories5 = [];
    var categories6 = []; 
    var name = [];
    var data1 = [];
    var data2 = [];
    var data3 = [];
    var data4 = [];
    var data5 = [];
    var data6 = []; 
    for (var i = 0; i < data.length; i++) {
      if (name.indexOf(data[i]["pur_yr"]) == -1) {
        name.push(data[i]["pur_yr"]);
      }
    }
    console.log(name);
    for (var i = 0; i < data.length; i++) {
      if (name[0] == data[i]["pur_yr"]) {
        categories1.push(data[i]["pur_org_no"]);
      } else if (name[1] == data[i]["pur_yr"]) {
        categories2.push(data[i]["pur_org_no"]);
      } else if (name[2] == data[i]["pur_yr"]) {
        categories3.push(data[i]["pur_org_no"]);
      } else if (name[3] == data[i]["pur_yr"]) {
        categories4.push(data[i]["pur_org_no"]);
      } else if (name[4] == data[i]["pur_yr"]) {
        categories5.push(data[i]["pur_org_no"]);
      } 
    }
    console.log(categories1)
  console.log(categories2) 
    console.log(categories3) 
    console.log(categories4) 
    console.log(categories5)
    console.log(categories6)

    for (var i = 0; i < data.length; i++) {
      if (name[0] == data[i]["pur_yr"]) {
        data1.push(data[i]["pur_mth_amt"]);
      } else if (name[1] == data[i]["pur_yr"]) {
        data2.push(data[i]["pur_mth_amt"]);
      } else if (name[2] == data[i]["pur_yr"]) {
        data3.push(data[i]["pur_mth_amt"]);
      } else if (name[3] == data[i]["pur_yr"]) {
        data4.push(data[i]["pur_mth_amt"]);
      } else if (name[4] == data[i]["pur_yr"]) {
        data5.push(data[i]["pur_mth_amt"]);
      } 


    }
 }
  
  
  console.log("data1:"+data1);
  console.log("data2:"+data2);
  console.log("data3:"+data3);
  console.log("data4:"+data4);
  console.log("data5:"+data5);
  console.log("data6:"+data6);
      if(data && data.length>0){
        return {
            grid: {
              top: "5%",
              right: "5%",
              left: "5%",
              bottom: "15%",
              containLabel: true,
            },
            tooltip: {
              trigger: "axis",
              axisPointer: {
                type: "none",
                label: {
                  show: false,
                  backgroundColor: "#6a7985",
                },
              },
              formatter: function (params) {
                //console.log(params,'params')
                 console.log("params[1].data:::"+params[1].data)
                    let circle = `<span style="display:inline-block;margin-right:5px;border-radius:50%;width:10px;height:10px;left:5px;background-color:`
      
                    if (params) {
                      if (params[1] && params[1].data == '0') {
                        var noData1 = ''
                        noData1 = `style='display:none'`
                      } if (params[2] && params[2].data == '0') {
                        var noData2 = ''
                        noData2 = `style='display:none'`
                      }
                      if (params[3] && params[3].data == '0') {
                        var noData3 = ''
                        noData3 = `style='display:none'`
                      }
                      if (params[4] && params[4].data == '0') {
                        var noData4 = ''
                        noData4 = `style='display:none'`
                      }
                      if (params[5] && params[5].data == '0') {
                        var noData5 = ''
                        noData5 = `style='display:none'`
                      } 
                      return `
                      <div>${params[0].name}</div>
                      <div>总数:${(params[0] ? (params[0].data * 1).toLocaleString() : '暂无数据')}</div>
                      <div class='data4' ${noData4}>${circle}#2382E9"></span>博士:${    (params[4]  &&  params[4].data != '0'? ( params[4].data * 1).toLocaleString() : '0')}</div>
                      <div class='data3' ${noData3}>${circle}#00CBB4"></span>硕士:${    (params[3]  &&  params[3].data != '0'? ( params[3].data * 1).toLocaleString() : '0')}</div>
                      <div class='data2' ${noData2}>${circle}#8CFFF0"></span>本科:${    (params[2]  &&  params[2].data != '0'? ( params[2].data * 1).toLocaleString() : '0')}</div> 
                      <div class='data1' ${noData1}>${circle}#CE769B"></span>本科以下:${(params[1] &&   params[1].data != '0' ? (params[1].data * 1).toLocaleString() : '0')}</div> 
                    `
                    } 
              },
            },
            legend: {
              itemGap: itemGap,
              data: [name[0], name[1], name[2], name[3] ],
              bottom: "bottom",
              textStyle: {
                fontWeight: "normal",
                color: "#fff",
              },
              itemWidth: 20, // 图例标记的图形宽度。
              itemHeight: 20,
            },
            xAxis: {
              data: categories1,
              axisLabel: {
                show: true,
                fontSize: 12,
                color: "#fff",
                rotate: 0, // 文本旋转角度
              },
              axisLine:{  
               show:true,
                      lineStyle:{
                          color:'#fff',
                          width:1,
                      }
                      
                  },
              axisTick: {
                show: true,
              },
              splitLine: {
                //修改背景线条样式
                show: false,
              },
            },
            yAxis: {
                            max: function (value) {//Y轴坐标轴数据间隔调整
                if(value.max<=10){
                    return 10;
                }
              },
              minInterval:1,
              axisLabel: {
                fontSize: 12,
                color: "#fff",
              },
              axisLine: {
                show: false,
              },
              axisTick: {
                show: false,
              },
              splitLine: {
                //修改背景线条样式
                show: false,
              },
            },
            series: [
              {
                name: name[4],
                type: "line",
                //stack: "y",
                data: data5,
                barWidth: bw,
                barGap: "-10%",
                symbolSize: 0, // symbol的大小设置为0让线的小圆点不显示
                label: {
                  show: true,
                  position: "top",
                  color: "#fff",
                  fontSize:12,
                  formatter: (res) => {
                    return (res.value * 1).toLocaleString();
                  },
                },
                itemStyle: {
                  normal: {
                    color: "rgba(1,1,1,0)",
                    barBorderRadius: [0, 0, 0, 0],
                  },
                },
              },
              /*{
                name: name[5],
                // type: "bar",
                //stack: "total",
                data: data6,
                barWidth: bw,
                type: "line",
                symbol: 'none', 
                symbolSize: 0, // symbol的大小设置为0让线的小圆点不显示
                showSymbol: false, // 不显示symbol不显示
                itemStyle: {
                  normal: {
                    color: "rgba(0,0,0,0)",
                    barBorderRadius: [0, 0, 0, 0],
                  },
                },
                lineStyle: {
                    width: 0, // 线宽是0不显示线
                    color: 'rgba(0, 0, 0, 0)' // 线的颜色是透明的
                },
                emphasis:{ // 鼠标经过时:
                    color: 'rgba(0, 0, 0, 0)',
                    borderColor: 'rgba(0, 0, 0, 0)'
                    }
              },
              */
              {
                  name: name[3],
                  type: "bar",
                  stack: "total",
                  data: data4,
                  barWidth: bw,
                  itemStyle: {
                    normal: {
                      color: "#CE769B",
                      barBorderRadius: [0, 0, 0, 0],
                    },
                  },
                },
              {
                  name: name[2],
                  type: "bar",
                  stack: "total",
                  data: data3,
                  barWidth: bw,
                  itemStyle: {
                    normal: {
                      color: "#8CFFF0",
                      barBorderRadius: [0, 0, 0, 0],
                    },
                  },
                },
              {
                  name: name[1],
                  type: "bar",
                  stack: "total",
                  data: data2,
                  barWidth: bw,
                  itemStyle: {
                    normal: {
                      color: "#00CBB4",
                      barBorderRadius: [0, 0, 0, 0],
                    },
                  },
                },
              {
                name: name[0],
                type: "bar",
                stack: "total",
                data: data1,
                barWidth: bw,
                itemStyle: {
                  normal: {
                    color: "#2382E9",
                    barBorderRadius: [0, 0, 0, 0],
                  },
                },
              } 
            ],
          };
      }else{
        return {
            title: {
                text: '无相关数据',
                x: 'center',
                y: 'center',
                textStyle: {
                  fontSize: 16,
                  fontWeight: 'normal',
                  color: "#fff"
                }
              },
              series: [
                {
                  data: null
                }
              ] 
        } 
      }
    };
    

二.柱状图例颜色+图例名称自定义动态的写法

(data)=>{
  console.log(data);
  var categories1 = [];
      var categories2 = [];
      var name = [];
      var data1 = []; 
      var data2 = []; 
      for(var i=0 ; i< data.length ; i++){ 
          if(name.indexOf(data[i]['pur_yr']) == -1){
              name.push(data[i]['pur_yr'])
          } 
      } 
      for(var i=0 ; i< data.length ; i++){ 
          if(name[0] == data[i]['pur_yr']){
              categories1.push(data[i]['pur_org_no'])
              data1.push(data[i]['pur_mth_amt'])
          }else{
              categories2.push(data[i]['pur_org_no'])
              data2.push(data[i]['pur_mth_amt'])
          }
          
      }  
      if(data && data.length>1){
        return {
          grid: {
      top: "5%",
      right: "5%",
      left: "5%",
      bottom: "15%",
      containLabel: true,
    },
           tooltip: {
                  show:true,
                  trigger: 'axis',
                   formatter: (v) => {
                  //console.log(v[0].dataIndex)
                   let circle = `<span style="display:inline-block;margin-right:5px;border-radius:50%;width:10px;height:10px;left:5px;background-color:`
                  //界面显示原数值
                          let v1 = data1[v[0].dataIndex]?Number(data1[v[0].dataIndex]).toLocaleString():'-';
                          let v2 = data2[v[0].dataIndex]?Number(data2[v[0].dataIndex]).toLocaleString():'-';
                  return `<div>
                      <div>${categories1[v[0].dataIndex]}</div>
                      <div>${circle}#3C7DF9"></span>${name[0]}:${v1.indexOf('.')!=-1?v1:v1+''}</div>
                      <div>${circle}#00CBB4"></span>${name[1]}:${v2.indexOf('.')!=-1?v2:v2+''}</div>
                      </div>`;
              },
           },
          legend: {
              bottom:"bottom",
              data:name,
      textStyle: {
        fontWeight: 'normal',      
        color: '#fff'
      },
              itemWidth: 20, // 图例标记的图形宽度。
              itemHeight: 20,
          },
          xAxis: {
             // offset: -50, 
              data:categories1,
              axisLabel: {
                  fontSize: 15,
                  color: '#fff',
                  //rotate:45, // 文本旋转角度
              },
              axisTick: {
        show: true,
      },
          
              axisLine:{  
                  show:true,
                  lineStyle:{
                      color:'#fff',
                      width:1,
                  }
                  
              },
          },
          yAxis: {
              max: function (value) {
                if(value.max<=10){
                    return 10;
                }
              },
              minInterval:1,
              axisLabel: {
                  fontSize: 12,
                  color: '#fff' 
              },
              axisLine:{
                  show:false,
                  lineStyle:{
                      color:'#fff', 
                      //type:'dashed',
                      width:1
                  }
                  
              },
              splitLine:{ //修改背景线条样式
                  show:false,//是否展示 
                  lineStyle:{
                      color:'#fff', 
                      //type:'dashed',
                      width:1
                  }
              }
          },
          series: [{
              name: name[0],
              type: 'bar',
              barGap: "45%",
              data: data1,
              barWidth:30,
              label: {
                  show: true,
                  position: 'top',
                  color:'#fff',
                  fontSize:12,
                  formatter:(res)=>{
                         
                          return  (res.value*1).toLocaleString()
                      }
              },
              itemStyle: {
                  normal: {
                      color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
                          {  
                              offset: 0,
                              color: '#3C7DF9'
                          }, 
                          {
                              offset: 1,
                              color: '#3C7DF9'
                          }]),
                  }
              },
          },
          {
              name: name[1],
              type: 'bar',
              data: data2,
              barWidth:30,
              label: {
                  show: true,
                  position: 'top',
                  fontSize:12,
                  color:'#fff',
                  formatter:(res)=>{
                         
                          return  (res.value*1).toLocaleString()
                      }
              },
              itemStyle: {
                  normal: {
                      color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
                          {  
                              offset: 0,
                              color: '#00CBB4'
                          }, 
                          {
                              offset: 1,
                              color: '#00CBB4'
                          }]),
                  }
              },
          }]
      };
      }else{
        return {
          title: {
              text: '无相关数据',
              x: 'center',
              y: 'center',
              textStyle: {
                fontSize: 16,
                fontWeight: 'normal',
                color: "#fff"
              }
            },
            series: [
              {
                data: null
              }
            ] 
      }
      }
  }

三/饼图的tooltp自定义及属性记录

(data)=>{
    console.log(data);
    return {
      animation: false,
      tooltip: {
        show: true,
        trigger: 'item',
        // formatter: '{b}<br />{c}<br />{d}%',
        tooltip: {
        show: true,
        trigger: 'item',
        // formatter: '{b}<br />{c}<br />{d}%',
        formatter: function(params) {
          var name = params.name;
          var value = params.value ? (params.value*1).toLocaleString():'-';
          var percent = (params.percent).toFixed(1) + '%';
          var color = params.color;
          return `
            <div style="display: flex; align-items: left; flex-direction: row; gap: 10px;">
              <div>
                <span style="display: inline-block; width: 10px; height: 10px; border-radius: 0; background-color: ${color}; margin-right: 6px;"></span>
                ${name}:${value.indexOf('.')!=-1?value:value+'.0'}亿元
              </div>
            </div>
          `;
        }
      },
      },
      legend: {
        top: 'center',
        right: 'right',
        textStyle: {
          fontSize: '22px',
          color: '#fff'
        },
        itemWidth: 20,
        itemHeight: 20,
        itemGap: 40,
      },
      series: [
        {
          name: 'Access From',
          type: 'pie',
          radius: ['50%', '80%'],
          center: ['40%', '53%'],
          minAngle: 5,  // 最小的扇区角度(0 ~ 360),用于防止某个值过小导致扇区太小影响交互
          avoidLabelOverlap: true,   // 是否启用防止标签重叠策略
          avoidLabelOverlap: false,
          label: {
            show: true,
            // formatter: '{b}\n{d}%',
            formatter: function(params) {
              return `${params.name}\n${(params.percent).toFixed(1)}%`;
            },
            textStyle: {
              fontSize: '22px',
              color: '#fff'
            }
          },
          labelLine: {
            show: true,
            length: 20,
                length2: 20
          },
          labelLayout:{//让饼图label全部显示出来
            hideOverlap:false
          },
          data,
        }
      ]
    };
    }

 

posted @ 2024-01-17 10:36  夏小夏吖  阅读(49)  评论(0编辑  收藏  举报