查看: 99|回复: 1

Vue2整合Echarts实现柱状图与饼图可视化:安装配置与主题使用

[复制链接]
发表于 3 小时前 | 显示全部楼层 |阅读模式
本文记录在 Vue 2 项目中整合 ECharts 实现基本数据可视化的流程,包括柱状图、饼图的渲染以及自定义主题的下载与应用。以下步骤基于实际项目经验,覆盖从依赖安装到图表渲染的完整过程。




1. 安装 ECharts 依赖

在项目根目录下运行 npm 命令安装 ECharts 包:

[code=shell]
npm install echarts -S
[/code]

安装完成后,推荐在 Vue 的入口文件 main.js 中全局引入并挂载到 Vue 原型上,以便在所有组件中通过 this.$echarts 直接调用。

[code=javascript]
// main.js
import * as echarts from 'echarts'
Vue.prototype.$echarts = echarts
[/code]




2. 创建容器与初始化图表

在任意组件中准备一个用于放置图表的 div 容器,并设置宽高。

[code=html]
<div>
  <div class="echart-box" ref="box"></div>
</div>
[/code]

使用 scoped 样式约束容器尺寸,边框仅用于开发调试:

[code=css]
.echart-box {
  width: 500px;
  height: 350px;
  border: 3px solid pink;
  margin: 20px auto;
}
[/code]

在组件 mounted 钩子中通过 $refs 获取 DOM 元素,并调用 echarts.init 初始化实例。

[code=javascript]
const userdom = this.$refs.box
const mycart = this.$echarts.init(userdom)
[/code]




3. 绘制柱状图

以 ECharts 官方示例中的基础柱状图为例,配置 xAxis、yAxis 及 series 数据。

[code=javascript]
const option = {
  xAxis: {
    type: 'category',
    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
  },
  yAxis: {
    type: 'value'
  },
  series: [{
    data: [120, 200, 150, 80, 70, 110, 130],
    type: 'bar',
    showBackground: true,
    backgroundStyle: {
      color: 'rgba(180, 180, 180, 0.2)'
    }
  }]
}
mycart.setOption(option)
[/code]

showBackground 和 backgroundStyle 用于在柱状图柱子背后显示浅色底块,增强视觉效果。setOption 方法将配置应用到实例上。




4. 绘制饼图

使用相同思路绘制饼图,在组件中创建第二个容器(ref="boxpie")并初始化。

[code=javascript]
const mypie = this.$echarts.init(this.$refs.boxpie)
mypie.setOption({
  title: {
    text: 'Referer of a Website',
    subtext: 'Fake Data',
    left: 'center'
  },
  tooltip: {
    trigger: 'item'
  },
  legend: {
    orient: 'vertical',
    left: 'left'
  },
  series: [{
    name: 'Access From',
    type: 'pie',
    radius: '50%',
    data: [
      { value: 1048, name: 'Search Engine' },
      { value: 735, name: 'Direct' },
      { value: 580, name: 'Email' },
      { value: 484, name: 'Union Ads' },
      { value: 300, name: 'Video Ads' }
    ],
    emphasis: {
      itemStyle: {
        shadowBlur: 10,
        shadowOffsetX: 0,
        shadowColor: 'rgba(0, 0, 0, 0.5)'
      }
    }
  }]
})
[/code]

emphasis 配置用于鼠标悬停时的高亮阴影效果。




5. 主题下载与使用

默认样式较普通,可以从 ECharts 主题下载页面(https://echarts.apache.org/zh/theme-builder.html)选择并下载 JS 主题文件,例如 vintage.js。将下载的 JS 文件放在项目 assets 目录中(如 src/assets/vintage.js),在组件中引入:

[code=javascript]
import '@/assets/vintage.js'
[/code]

然后在 init 方法中传入主题名称作为第二个参数:

[code=javascript]
const mycart = this.$echarts.init(userdom, 'vintage')
const mypie = this.$echarts.init(this.$refs.boxpie, 'vintage')
[/code]

应用主题后,图表的配色和样式会随之变化。




6. 完整组件示例

将上述步骤整合到一个 Vue 单文件组件中,最终代码如下:

[code=html]
<template>
  <div style="display: flex; justify-content: space-around;">
    <div class="echart-box" ref="box"></div>
    <div class="echart-box" ref="boxpie"></div>
  </div>
</template>

<script>
import '@/assets/vintage.js'
export default {
  mounted() {
    this.showEcarts()
  },
  methods: {
    showEcarts() {
      // 柱状图
      const userdom = this.$refs.box
      const mycart = this.$echarts.init(userdom, 'vintage')
      mycart.setOption({
        xAxis: {
          type: 'category',
          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
        },
        yAxis: {
          type: 'value'
        },
        series: [{
          data: [120, 200, 150, 80, 70, 110, 130],
          type: 'bar',
          showBackground: true,
          backgroundStyle: {
            color: 'rgba(180, 180, 180, 0.2)'
          }
        }]
      })

      // 饼图
      const mypie = this.$echarts.init(this.$refs.boxpie, 'vintage')
      mypie.setOption({
        title: {
          text: 'Referer of a Website',
          subtext: 'Fake Data',
          left: 'center'
        },
        tooltip: {
          trigger: 'item'
        },
        legend: {
          orient: 'vertical',
          left: 'left'
        },
        series: [{
          name: 'Access From',
          type: 'pie',
          radius: '50%',
          data: [
            { value: 1048, name: 'Search Engine' },
            { value: 735, name: 'Direct' },
            { value: 580, name: 'Email' },
            { value: 484, name: 'Union Ads' },
            { value: 300, name: 'Video Ads' }
          ],
          emphasis: {
            itemStyle: {
              shadowBlur: 10,
              shadowOffsetX: 0,
              shadowColor: 'rgba(0, 0, 0, 0.5)'
            }
          }
        }]
      })
    }
  }
}
</script>

<style scoped>
.echart-box {
  width: 500px;
  height: 350px;
  border: 3px solid pink;
  margin: 20px;
}
</style>
[/code]




总结

本文展示了在 Vue 2 项目中整合 ECharts 并渲染柱状图和饼图的核心步骤:安装依赖、全局注入、初始化实例、配置 option 以及应用第三方主题。这套流程同样适用于折线图、散点图等其他图表类型,只需根据 ECharts 官方示例调整 series.type 和相关配置即可。对于生产环境,建议将主题文件打包而非在运行时动态加载,以减少请求次数。
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层

Re: Vue2整合Echarts实现柱状图与饼图可视化:安装配置与主题使用

感谢分享!这个教程步骤非常清晰,从安装到柱状图、饼图的渲染再到主题应用,都讲得很直观。特别是把主题文件放在 assets 里引入这种方式,之前我直接放在 public 下总出问题,按你的方法再试一下。 另外想请教一下,如果图表容器需要在窗口变化时自适应,有没有推荐的 resize 处理方式?在 mounted 里加监听会不会有性能隐患?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-12 21:02 , Processed in 0.038849 second(s), 19 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部