在Vue项目中使用Echarts图表库

简介: 这篇文章介绍了如何在Vue项目中集成ECharts图表库,并通过具体的代码示例展示了如何创建并配置一个饼图来展示数据。

前言

ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。其使用方式颇为简单。

一、饼图

(1)【/src/views/Example/PieEchart.vue】

<template>
  <div style="padding: 100px; ">
    <div style="display: flex; flex: 1; width: 400px; height: 400px;">
      <div id="ScUcTcCoverageChart" style="width: auto; height: auto; flex: 1; border: 1px solid #dcdfe6;"></div>
    </div>
  </div>
</template>

<script setup>
import {
   
    h, onMounted, onUnmounted, getCurrentInstance, reactive } from 'vue'
import * as echarts from 'echarts'

/**
 * 英雄熟练度
 */
const heroProficiency = reactive({
   
   
  list: [],
})
/**
 * 查询【英雄熟练度】数据
 */
const queryHeroProficiency = async () => {
   
   
  const res = {
   
   
    success: true,
    msg: '请求成功',
    data: [
      {
   
    name: '赵怀真', value: 51, victoryRate: '72%' },
      {
   
    name: '云缨', value: 25, victoryRate: '68%' },
      {
   
    name: '庄周', value: 10, victoryRate: '85%' },
      {
   
    name: '后羿', value: 15, victoryRate: '51%' },
    ]
  }
  if (res.success) {
   
   
    heroProficiency.list = res.data
  } else {
   
   
    proxy.$message({
   
    message: res.msg, type: 'error', duration: 3000 })
  }

  handleInitHeroProficiencyChart()
}
/**
 * 实例化【英雄熟练度】饼图
 * 详情见:https://echarts.apache.org/examples/zh/index.html#chart-type-bar
 */
const handleInitHeroProficiencyChart = async () => {
   
   
  const chartDom = await document.getElementById('ScUcTcCoverageChart')

  // 销毁
  echarts.dispose(chartDom)
  // 实例化
  const myChart = echarts.init(chartDom)
  const option = {
   
   
    title: {
   
   
      text: '英雄熟练度',
      left: 'center',
      top: 5, // 修改标题高度
      textStyle: {
   
   
        color: '#999',
        fontWeight: 'normal',
        fontSize: 13
      }
    },
    tooltip: {
   
   
      trigger: 'item', // 可选值为'item'和'axis',默认为'item',表示鼠标悬浮在数据项上时触发tooltip,'axis'表示鼠标悬浮在坐标轴上时触发tooltip
      show: true, // 控制鼠标悬浮是否显示数据
      textStyle: {
   
   
        fontSize: 12,
        fontWeight: 'normal'
      }
    },
    legend: {
   
   
      orient: 'vertical', // 可选值为'horizontal'(水平布局)和'vertical'(垂直布局)
      top: 30, // 调整位置
      left: '0%', // 距离右侧位置
      icon: 'circle', // 修改小图标为圆形
      itemHeight: 12, // 修改圆形小图标的大小
      textStyle: {
   
   
        fontSize: 12, // 可控制每个legend项的间距
        color: "#828282",
        rich: {
   
   
          tag_one: {
   
   
            width: 60,
            color: '#000',
            fontSize: 12,
          },
          tag_two: {
   
   
            width: 40,
            color: '#333',
            fontSize: 12,
          },
          tag_three: {
   
   
            color: '#686868',
            fontSize: 12,
          },
        },
      },
      formatter: (name) => {
   
   
        let target
        for (let i = 0; i < heroProficiency.list.length; i++) {
   
   
          if (heroProficiency.list[i].name == name) {
   
   
            target = heroProficiency.list[i]
          }
        }
        return `{tag_one|${
     
     target.name}} {tag_two|${
     
     target.value}个} {tag_three|${
     
     target.victoryRate}}`
      },
    },
    color: ['#5470c6', '#91cc75', '#73c0de'], // 控制圆环图的颜色
    series: [
      {
   
   
        type: 'pie',
        radius: ['15%', '25%'], // 圆环分为内径和外径,就是两个半径不一样的饼图可组成一个圆环图,radius数组中的两项分别为内径和外径(相对画布的百分比),或者直接一个圆'30%'
        center: ['50%', '55%'], // 调整圆环图位置
        labelLine: {
   
   
          length: 20, // 牵引线高度
        },
        label: {
   
   
          alignTo: 'edge',
          formatter: (item) => {
   
   
            const str = `{a|${
     
     item.data.name}}\n{hr|}\n  {b|${
     
     item.data.value}场} 丨 {per|${
     
     item.data.victoryRate}}  `
            return str
          },
          minMargin: 20, // 最小外边距
          edgeDistance: 10, // 贴边距离
          backgroundColor: '#fff',
          borderColor: '#dcdfe6',
          borderWidth: 1,
          borderRadius: 4,
          rich: {
   
   
            a: {
   
   
              padding: [5, 20],
              color: '#000',
              align: 'center'
            },
            hr: {
   
   
              width: '100%',
              height: 1,
              backgroundColor: '#dcdfe6',
            },
            b: {
   
   
              color: '#000',
              fontSize: 12,
              lineHeight: 25,
              align: 'center'
            },
            per: {
   
   
              color: '#fff',
              backgroundColor: '#4C5058',
              padding: [4, 4, 3, 4],
              borderRadius: 4,
              lineHeight: 25,
              align: 'center'
            }
          }
        },
        data: heroProficiency.list,
        avoidLabelOverlap: true, // 防止牵引线堆叠挤在一块
        itemStyle: {
   
   
          emphasis: {
   
   
            opacity: 0.9
          }
        }
      }
    ]
  }

  // 点击事件
  myChart.on('click', function (params) {
   
   
    console.log(params);
  })
  option && myChart.setOption(option)
}

onMounted(() => {
   
   
  queryHeroProficiency()
})

onUnmounted(() => {
   
   
  // ...
})
</script>

<style lang="less" scoped>

</style>

(2)运行效果

目录
相关文章
|
2月前
|
JSON JavaScript 定位技术
vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息
vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息
260 1
|
2月前
|
算法 Java Linux
java制作海报五:java 后端整合 echarts 画出 折线图,项目放在linux上,echarts图上不显示中文,显示方框口口口
这篇文章介绍了如何在Java后端整合ECharts库来绘制折线图,并讨论了在Linux环境下ECharts图表中文显示问题。
47 1
|
2月前
|
JavaScript
vue中使用echarts绘制双Y轴图表时,刻度没有对齐的两种解决方法
vue中使用echarts绘制双Y轴图表时,刻度没有对齐的两种解决方法
439 0
|
2月前
|
JSON JavaScript 前端开发
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
598 0
|
2月前
|
JSON JavaScript 定位技术
Vue结合ECharts绘制省市地图:数据驱动区域颜色展示,支持省市下钻与经纬度打点功能
Vue结合ECharts绘制省市地图:数据驱动区域颜色展示,支持省市下钻与经纬度打点功能
177 0
|
4月前
|
JavaScript
echarts在Vue项目中的实际运用效果图
这篇文章展示了在Vue项目中使用ECharts图表库的步骤,包括安装ECharts、引入到Vue组件、创建图表实例以及通过watch监听数据变化来实现实时数据更新的方法。
echarts在Vue项目中的实际运用效果图
|
4月前
|
XML SQL JavaScript
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
这篇文章介绍了如何在Vue页面中结合SpringBoot、MyBatis、ElementUI和ECharts,实现从数据库获取数据并展示为图表的过程,包括前端和后端的代码实现以及遇到的问题和解决方法。
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
|
4月前
|
JavaScript
Echarts——VUE中如何给echarts绑定click事件
Echarts——VUE中如何给echarts绑定click事件
256 1
|
4月前
|
JavaScript
Echarts——VUE中非根节点时不显示图表也无报错
Echarts——VUE中非根节点时不显示图表也无报错
43 1
|
6月前
|
JavaScript 开发工具 git
大事件项目17----Vue项目引入Echarts
大事件项目17----Vue项目引入Echarts
大事件项目17----Vue项目引入Echarts

热门文章

最新文章

下一篇
DataWorks