vue3使用 echarts - 饼图、折线图

下载安装

npm install -S echarts

使用

饼图 - 带中心图形 - graphic - elements

js 复制代码
import { onMounted, ref, reactive, unref, nextTick } from "vue";
import * as echarts from "echarts";
import circle from "@/assets/panel/circle.png"
import star from '@/assets/panel/star.png'


/** 页面初始化 */
onMounted(() => {
  drawPieEchart("echart1", rightData.echartData1);
});

/** 饼图-echart */
const drawPieEchart = function (domId: string, data: any[]) {
  const chartDom: any = document.getElementById(domId);
  const myChart: any = echarts.init(chartDom);
  const option: any = {
    color: ['#43A2E7', '#EF6648'],
    tooltip: {
      trigger: "axis",
      axisPointer: {
        type: "shadow",
      },
    },
    graphic: {
      elements: [
        {
          type: 'image',
          style: {
            image: circle,
            width: 90,
            height: 90
          },
          left: 'center',
          top: '106'
        }]
    },
    series: [
      {
        type: "pie",
        top: "6%",
        radius: [70, 60],
        silent: true, // 不响应和触发鼠标事件,默认为 false
        itemStyle: {
          borderRadius: 2,
          borderColor: "#060F1E",
          borderWidth: 2,
        },
        label: {
          show: "true",
          alignTo: "edge",
          position: "outside",
          formatter: function (data: any) {
            return data.name + "\n" + data.percent + "%";
          },
          minMargin: 5,
          edgeDistance: 0,
          lineHeight: 20,
          color: "#fff",
          fontSize: 14,
          rich: {
            value: {
              fontSize: 18,
              color: "#30eeff",
            },
          },
        },
        labeLine: {
          show: "true",
        },
        emphasis: {
          label: {
            show: true,
            fontSize: 20,
            fontWeight: "bold",
          },
        },
        data: data,
      },
    ],
  };
  option && myChart.setOption(option, true);
  // 浏览器窗口大小变化,图表大小自适应
  window.addEventListener("resize", () => {
    myChart.resize();
  });
};

折线图 - 图表标记 markPoint

js 复制代码
/** 折线图-echart */
const drawFoldLine = function (domId: string, data: any) {
  const chartDom: any = document.getElementById(domId);
  const myChart = echarts.init(chartDom);
  const option: any = {
    color: ['#43A2E7', '#EF6648'],
    tooltip: {
      trigger: "axis",
      backgroundColor:"#000910",
      borderWidth:0,
      borderRadius:0,
      textStyle:{
        color:'#fff'
      },
      axisPointer: {
        type: "shadow",
      },
    },
    legend: {
      type: "plain",
      textStyle: {
        color: "#fff",
        fontSize: 12,
      },
      left: 26,
      top: 16,
      data: [
        {
          name: '计划产值',
          icon: 'circle',
        },
        {
          name: '累计完成产值',
          icon: 'circle',
        }
      ],
    },
    grid: {
      left: "3%",
      right: "4%",
      bottom: "3%",
      containLabel: true,
    },
    xAxis: {
      data: data.xAxisData,
      type: "category",
      boundaryGap: false,
      textStyle: {
        fontSize: 12,
        color: "#A5B2BB",
      },
      axisLine: {
        show: true,
        lineStyle: {
          color: "#657A8A",
        },
      },
      axisLabel: {
        showMaxLabel: true,
        showMinLabel: true,
      },
    },
    yAxis: {
      type: "value",
      textStyle: {
        fontSize: 12,
        color: "#A5B2BB",
      },
      axisLine: {
        show: true,
        lineStyle: {
          color: "#657A8A",
        },
      },
      splitLine: { // 修改背景线条样式
        lineStyle: {
          color: "#657A8A", // 线条颜色
          // type: "dashed" // 线条样式,默认是实现,dashed是虚线
        }
      },
    },
    series: [
      {
        data: data.seriesData1,
        type: 'line',
        name: '计划产值',
        smooth: true,
        markPoint: {
          symbol: "image://" + star,
          symbolSize: 16,
          symbolOffset: [0, '-50%'],
          animation: true,
          label: {
            show: true,
            color: '#fff',
            fontSize: 14,
            position: 'top',
            backgroundColor: '#0B2E47',
            padding: [4, 12]
          },
          data: [
            {
              coord: [1, 820],
              value: '特殊标记1',

            },
            {
              coord: [3, 901],
              value: '特殊标记2',
            },
            {
              coord: [6, 1330],
              value: '特殊标记3',
            }
          ]
        }
      },
      {
        data: data.seriesData2,
        type: 'line',
        name: '累计完成产值',
        smooth: true
      }
    ]
  };

  option && myChart.setOption(option, true);
  // 浏览器窗口大小变化,图表大小自适应
  window.addEventListener("resize", () => {
    myChart.resize();
  });
};
相关推荐
小鼠米奇1 小时前
详解Ajax与axios的区别
前端·javascript·ajax
Bunury2 小时前
Vue3新组件transition(动画过渡)
前端·javascript·vue.js
zero.cyx2 小时前
JS函数部分
开发语言·前端·javascript
超级小的大杯柠檬水2 小时前
SpringBoot lombok(注解@Getter @Setter)
java·前端·spring
AvatarGiser2 小时前
《ElementUI/Plus 踩坑》el-table + sortablejs 拖拽顺序错乱(Vue2/3适用)
前端·vue.js·elementui
applebomb2 小时前
UniApp一句话经验: px -> rpx动态转换和动态元素区域的获取
javascript·typescript·uni-app·rpx·动态区域
louqle2 小时前
vue2:树形控件el-tree中加载两种不同结构的数据
javascript·vue.js·elementui
蓝染-惣右介2 小时前
【若依RuoYi-Vue | 项目实战】帝可得后台管理系统(二)
java·前端·后端·vue·springboot
哈哈哈哈cwl2 小时前
秒懂Vue.jsDiff算法与虚拟DOM
前端·javascript·vue.js
我码玄黄3 小时前
HTML翻牌器:用CSS和HTML元素创造动态数字展示
前端·css·html