当前位置: 首页 > article >正文

【Echarts】vue3打开echarts的正确方式

ECharts 是一个功能强大、灵活易用的数据可视化工具,适用于商业报表、数据分析、科研教育等多种场景。那么该如何优雅的使用Echarts呢? 这里以vue3为例。

安装echarts

pnpm i echarts

封装公用方法

// @ts-nocheck
import * as echarts from 'echarts';
// 我们这里借助vueUse提高可视化体验, useResizeObserver监听dom大小改变, useDebounceFn监听中添加防抖
import { useResizeObserver, useDebounceFn } from '@vueuse/core';
// 引入地图json 按需,不是地图则不需要
// import china from './china.json';
// echarts.registerMap('china', china);

/**
 * @param el 图表挂在dom
 * @param options 图表配置
 */
export function useECharts(el: HTMLElement, options: echarts.EChartsOption) {
  let chart: any;
  // 图表初始化
  chart = echarts.init(el);
  // 设置图表配置
  chart.setOption(options);
  // 挂载dom宽度改变监听重新渲染图表
  useResizeObserver(
    el,
    useDebounceFn(() => {
      chart.resize();
    }, 50)
  );
  // 定义setData方法
  const setData = (dataset: echarts.DatasetOption | echarts.DatasetOption[]) => {
    chart.setOption(Object.assign(options, { dataset }));
  };
  // 返回echarts实例,和更新data方法,方便更新图表
  return [chart, { setData }];
}

图表使用

<template>
  <div ref="helloChartRef" class="chart"></div>
</template>
<script setup lang="ts">
  import { onMounted, ref } from 'vue';
  import { useECharts } from '@/utils';
  import type { EChartsType } from 'echarts';

  let chart: EChartsType;
  const helloChartRef = ref();
  const theme = ref('dark');

  onMounted(() => {
  	// todo 为了vue模板看起来干净,可以吧options抽离到外部js中去
    chart = useECharts(helloChartRef.value, {
      xAxis: {
        // x轴
        data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],
      },
      yAxis: {
        // y轴
      },
      toolbox: {
        // 工具箱 官方文档:http://echarts.apache.org/zh/option.html#toolbox
        feature: {
          // 按钮的位置和配置参数的排序有关
          restore: {}, // 刷新按钮
          dataZoom: {
            // 缩放按钮
            yAxisIndex: false, // 不选取y轴的坐标(就是全选y轴)
          },
          saveAsImage: {}, // 保存为图片的按钮
        },
      },
      series: {
        // 图表类型
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20],
      },
    });
  });
</script>

<style lang="less" scoped>
  .chart {
    height: 300px;
  }
</style>

效果

是不是很容易就上手了呢,也可以到我自己部署的案例网站看实际效果呢,还可以边看效果边看源码。
请添加图片描述

相关网站

  • echarts官方文档
  • 博客demo

摸鱼博客就写到这啦,听我说谢谢你,因为有你,我的博客浏览+1.


http://www.kler.cn/news/303463.html

相关文章:

  • real, dimension(3) :: rho1 和 real :: rho1(3) 的区别
  • C++学习笔记----7、使用类与对象获得高性能(一)---- 书写类(1)
  • element表格合并列数据相同合并单元格
  • 【Flutter 面试题】 无需上下文进行路由跳转原理是怎么样的
  • Python用MarkovRNN马尔可夫递归神经网络建模序列数据t-SNE可视化研究
  • 医疗报销|基于springboot的医疗报销系统设计与实现(附项目源码+论文+数据库)
  • RocketMQ 集群搭建详细指南
  • F12抓包10:UI自动化 - Elements(元素)定位页面元素
  • 【devops】devops-git之git分支与标签使用
  • Kubernetes 容器与镜像管理
  • 五、Django 路由配置
  • 如何编写ChatGPT提示词
  • LabVIEW中EPICS客户端/服务端的测试
  • 数据库系统概论(3,4)
  • 【网络安全】漏洞挖掘之会话管理缺陷
  • Layout 布局组件快速搭建
  • 如何建设数据中台(五)——数据汇集—打破企业数据孤岛
  • Android 12.0 Launcher修改density禁止布局改变功能实现
  • 【C++题解】1398. 奇偶统计
  • Apple Watch Series 10 鈦強勁
  • Swift语言基础教程、Swift练手小项目、Swift知识点实例化学习
  • IT从业者如何提升自身竞争力,应对全球化挑战。
  • Django笔记一:搭建Django环境与URL路径访问
  • 数据结构-线性表顺序单项链表双向链表循环链表
  • B端界面看国外,清新活泼又可爱。
  • 31. 如何在MyBatis中使用自定义拦截器?有哪些常见应用场景?
  • ASPICE评估:汽车软件质量的守护神
  • 强!推荐一款Python开源自动化脚本工具:AutoKey!
  • EmguCV学习笔记 C# 11.6 图像分割
  • 力扣最热一百题——矩阵置零