• echarts随笔


      写了一段时间的自定义报表,这几天终于接触到了echarts,用它来显示图形,刚开始做的时候都是直接copy的以前写过的图形的代码,以前没问题,这次终于出问题了,因为copy过来的,又不知道什么意思,报了个错,真的要崩溃,无从下手,只能把现在的代码和以前的代码做比较,说实话,这并不是一个好方法。折腾了几天,到今天,百度了一下echarts参数的意思,再比较终于发现了问题,

    这是写的柱状图和折线图的代码:

    var myChart = echarts.init(document.getElementById('main'));
    
    myChart.setOption({
      title: {
        text: reportName, //正标题
        link: "", //正标题链接 点击可在新窗口中打开
        x: "center", //标题水平方向位置
        //正标题样式
        textStyle: {
           fontSize:bzwt
        }
      },
      tooltip : {//鼠标悬浮交互时的信息提示
          trigger: 'axis',
        textStyle:{
          fontSize:bzwti
        }
      },
      legend: {//图例,每个图表最多仅有一个图例
        data:[""]//很重要!data内的字符串数组需要与series数组内每一个series的name值相对应,
      },
      toolbox: {
        show : true,
        feature : {
          mark : {show: false},
          dataView : {show: false, readOnly: true},
          magicType: {show: false, type: ['line', 'bar']},
          restore : {show: false},
          saveAsImage : {show: false}
        }
      },
      //设置节点不能拖动
      calculable : false,
      grid :{
        left:xd,
        bottom:yd,
        right:xc,
      },
      xAxis : [
      {
        type : 'category',
        axisLabel: {
          inside:false,
          textStyle: {
            fontSize:bzw
          }
        } , 
        data:xArr 
      }],
      yAxis : [
        {
          type : 'value',
    
          axisLabel: {
            inside:false,
            axisTick : {show: false},
            textStyle: {
              fontSize:bzw
            }
    
          },
    
        }
      ],
      series : [
      {
        name:name1,
        type:type,
        stack: '费用', 
        itemStyle: {
          normal: {
            color: 'blue',
          }
        },
        data:oneArr
      },
      {
        name:name2,
        type:type,
        stack: '费用', 
        itemStyle: {
          normal: {
            color: 'gray',
          }
        },
        data:twoArr
      },
      {
        name:name3,
        type:type, 
        label:{
          normal:
          {
            show:true,
            textStyle:{
              fontSize:bzwz
            }
          }
        }, 
        itemStyle: {
          normal: {
            color: 'red',
          }
        },
        data:threeArr
      }]
    });
    window.onresize = myChart.resize;

    因为数据都是从后台传过来的,刚开始又不懂各个参数是什么意思,所以找不到问题所在,到现在才发现图形的类型传错了,传过来的是BT(用来区分是什么类型的图形),所以类型哪里显示的一直是BT,然后控制台报错 Component series.BT not exists. Load it first. 也不知道是个什么意思,在页面里面找BT也找不到,百度各种情况也没有一种是符合自己的情况,真实麻烦。然后又一个个排除,终于发现了这个错误,所以还是要细心啊。

      做饼状图的时候代码又不一样,因为条件少了。

    这是我写饼状图的部分代码:

      

    //加载图表
    var myChart = echarts.init(document.getElementById('main'));
    
    myChart.setOption({
        title: {
          text: reportName, //正标题
         link: "", //正标题链接 点击可在新窗口中打开
        x: "center", //标题水平方向位置
        //正标题样式
        textStyle: {
          fontSize:bzwt
        }
      },
      tooltip : {
        trigger: 'item',
        formatter:" {b}:{c} ({d}%)",
        textStyle: {
          fontSize:bzw
        }
      },
      legend: {
        orient:'vertical',
        left:'left',
        data:oneArr
      }, 
      series : [
      {
        name:'库存',
        type:'pie',
        radius:'55%',
        center:['50%','60%'],
        itemStyle:{
          normal:{
            label:{
            textStyle: {
              fontSize:bzwti
            }
          }
        },
        emphasis:{
          shadowBlur:10,
          shadowOffsetX:0,
          shadowColor:'rgba(0,0,0,0.5)',
          label:{
            textStyle: {
              fontSize:bzw
            }
          }
        }
      },
      data:xArr
    //data:Xval
      }
    ] 
    
    });
    window.onresize = myChart.resize;    

      因为只有两个数据显示,所以分不清谁是谁,然后比较才知道oneArr是一个装数据的数组,类似这种["27.36", "15.32", "11.83", "8.40", "8.33", "7.67", "6.84", "5.08", "4.66", "4.51"],series中的data是一个里面是装有很多对象的数组,然后格式就是类似这种[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]。里面的对象格式是这样的:    { name: "高斯贝尔数码科技 ,  "value: "27.36"}

      当然图表需要初始化

    //定义图表大小
    
    var bzw = document.body.clientWidth/32;
    var bzwt = document.body.clientWidth/28;
    var bzwz = document.body.clientWidth/48;
    var bzwti = document.body.clientWidth/40;
    var xd = 50/640*document.body.clientWidth+10;
    var xc = 40/640*document.body.clientWidth+10;
    var yd = 80/640*document.body.clientWidth+10;
    
    //页面加载完毕
    window.uexOnload = function(){
      var chartContainer = document.getElementById("main");
      chartContainer.style.width = document.body.clientWidth +'px';
      chartContainer.style.height = document.body.clientWidth*0.5 +'px';
      DrawEChartLoad();
    }
    
    //图表初始化
    
    function DrawEChartLoad(){
      var myChart = echarts.init(document.getElementById('main'));
      myChart.showLoading();
    }

      然后差不多就是这样。。。

  • 相关阅读:
    linux ssh 免密码登录
    Emacs Org Mode学习
    Emacs Org Mode学习
    java--for循环,一个分号的区别
    java--for循环,一个分号的区别
    【JVM.6】虚拟机类加载机制
    【JVM.5】类文件结构
    【JVM.4】调优案例分析与实战
    【JVM.3】虚拟机性能监控与故障处理工具
    【JVM.2】垃圾收集器与内存分配策略
  • 原文地址:https://www.cnblogs.com/yaoya/p/6485512.html
Copyright © 2020-2023  润新知