echarts图表3

157 阅读1分钟

饼图渲染:

 //基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(this.$refs.main);
     /* 深拷贝一下 生成两个不同的对象 */
    this.lineList = JSON.parse(JSON.stringify(this.reportsList));
    /* 展示标题 */
    this.lineList.title = {
      text: "华东饼图数据",
    };
    /* 展示提示框组件 */
    this.lineList.tooltip = {
      /* a表示系列名 <br/>表示换行 b表示数据名 c表示数据值 d表示所占的百分比 */
      formatter: '{a} <br> {b} <br> {c} <br> ({d}%)'
    };
     /* 把图例的位置调整一下 */
    this.lineList.legend.top = '10%';
    this.lineList.legend.left = '0';

    /* 只显示华东的饼图数据 */
    this.lineList.series.splice(1)
    /* 先把图标的类型都改成饼图 */
    this.lineList.series[0].type = 'pie';
    /* 把图例中除了华东的图例都删掉 */
    this.lineList.legend.data.splice(1);
    /* 拿到时间集合用来展示饼图的name值 */
    let nameList = this.lineList.xAxis[0].data;
    /* 拿到数据用来展示饼图的value值 */
    let valueList = this.lineList.series[0].data;
    /*  let data = [{
      name:"2017-12-27",
      value:2999
    }] */
    let newArr = [];
    /* 下面的操作是为了把两个数组整合成上面的格式 */
    nameList.forEach((r,i)=>{
      let obj = {
        name:r,
        /* 因为两个数组的长度是一样的,
        索引对应的值也是一样的,key和value的值是相对应,
        所以直接使用如下方式取值 */
        value:valueList[i]
      }
      /* 把组装好的对象塞到新数组中 */
      newArr.push(obj)
    })
    /* 给华东的数据组转好格式后重新赋值,为了展示饼图线对应的名字 */
    this.lineList.series[0].data = newArr;
    /* 设置饼图的圆心的大小和圆的大小 */
    this.lineList.series[0].radius = ['10%', '45%'];
    /* 设置圆的上下左右的距离 */
    this.lineList.series[0].center = ['58%', '60%'];
    /* 把圆的形状设置成玫瑰形 */
    this.lineList.series[0].roseType = 'area';
    /* 给圆设置圆角 */
    this.lineList.series[0].itemStyle = {
      borderRadius: 5
    }
    /* 把x轴隐藏 */
    this.lineList.xAxis = {
      show:false
    }
    /* 把y轴隐藏 */
    this.lineList.yAxis = {
      show:false
    }
   
    // 绘制图表
    myChart.setOption(this.lineList);
    window.PieChart = myChart;

样式穿透 只针对于当前的页面 不会修改element的样式,当你需要修改组件的样式 直接使用组件的类名修改不了 这时候就需要使用样式穿透 样式穿透有两种方式 第一种是 自定义的父元素类名 >>> 组件的类名 使用了scss会失效 第二种是 自定义的父元素类名 /deep/ 组件的类名 这种不被scss兼容会报错

.reports >>> .el-card{
  /* 这里使用auto无效必须使用inherit继承上一级的溢出样式 */
  overflow:inherit!important;;
}

中国地图组件

  /* 定义一个随机函数生成数据 */
    function randomValue() {
      /* Math.round() 四舍五入成整数 */
      /* 生成0-100的随机数整数 */
      return Math.round(Math.random() * 100);
    }

定义各个省市的数据

 var dataList = [
      { name: "南海诸岛", value: 0 },
      { name: "北京", value: randomValue() },
      { name: "天津", value: randomValue() },
      { name: "上海", value: randomValue() },
      { name: "重庆", value: randomValue() },
      { name: "河北", value: randomValue() },
      { name: "河南", value: randomValue() },
      { name: "云南", value: randomValue() },
      { name: "辽宁", value: randomValue() },
      { name: "黑龙江", value: randomValue() },
      { name: "湖南", value: randomValue() },
      { name: "安徽", value: randomValue() },
      { name: "山东", value: randomValue() },
      { name: "新疆", value: randomValue() },
      { name: "江苏", value: randomValue() },
      { name: "浙江", value: randomValue() },
      { name: "江西", value: randomValue() },
      { name: "湖北", value: randomValue() },
      { name: "广西", value: randomValue() },
      { name: "甘肃", value: randomValue() },
      { name: "山西", value: randomValue() },
      { name: "内蒙古", value: randomValue() },
      { name: "陕西", value: randomValue() },
      { name: "吉林", value: randomValue() },
      { name: "福建", value: randomValue() },
      { name: "贵州", value: randomValue() },
      { name: "广东", value: randomValue() },
      { name: "青海", value: randomValue() },
      { name: "西藏", value: randomValue() },
      { name: "四川", value: randomValue() },
      { name: "宁夏", value: randomValue() },
      { name: "海南", value: randomValue() },
      { name: "台湾", value: randomValue() },
      { name: "香港", value: randomValue() },
      { name: "澳门", value: randomValue() },
    ];

渲染

let ChinaChart = echarts.init(this.$refs.ChinaChart);
    let options = {
      /* 提示框组件 */
      tooltip: {
        formatter: function (params) {
          console.log(params)
          /* params.seriesName 系列名 在series对象中name属性中定义 */
          /* params.name 数据名称 是series对象中data数组中对象的属性*/
          /* params.value 数据值 是series对象中data数组中对象的值*/
          return (
            params.seriesName + " : " + params.name + " -- " + params.value
          );
        },
      },
       visualMap: {
        show: true,
        x: 10,
        y: 20,
        splitList: [
          { start: 70, end: 80 },
          { start: 60, end: 70 },
          { start: 50, end: 60 },
          { start: 40, end: 50 },
          { start: 30, end: 40 },
          { start: 20, end: 30 },
          { start: 10, end: 20 },
          { start: 0, end: 10 },
        ],
        color: [
          "#5475f5",
          "#9feaa5",
          "yellow",
          "#74e2ca",
          "#e6ac53",
          "#9fb5ea",
          "#FEF5DC",
        ],
      },
      /* 地图的配置项 */
      geo: {
        map: "china",
        /* 控制缩放和拖拽 */
        roam: true,
        /* 按比例放大缩小 */
        zoom: 1,
        /* 地图上面的文字 */
        label: {
          normal: {
            show: true,
            fontSize: "12",
            color: "rgba(0,0,0,0.7)",
          },
        },
        itemStyle: {
          normal: {
            borderColor: "rgba(0, 0, 0, 0.2)",
          },
          emphasis: {
            areaColor: "red",
            shadowOffsetX: 10,
            shadowOffsetY: 10,
            shadowBlur: 20,
            borderWidth: 0,
            shadowColor: "rgba(0, 0, 0, 0.5)",
          },
        },
      },
      /* 地图的数据 */
      series: [
        {
          name: "新冠确诊人数",
          type: "map",
          geoIndex: 0,
          /* 把省份数据塞到data中 */
          data: dataList,
        },
      ],