多个Echart遍历生成 / 词图云

echart官网

安装

如果版本报错推荐安装以下版本
npm install echarts@4.8.0 --savenpm uninstall echarts//这个是卸载命令以下安装成功后是局部引入:

多个Echart遍历生成

vue3+echart
单个页面多个图表循环渲染展示:

在这里插入图片描述

<template><div class="main"><div class="section"><div class="section" v-for="(chartOption, index) in chartOptions" :key="index"><div :ref="el => chartRefs[index] = el" style="width:1400px;height: 400px"></div></div><!-- 隐藏表格 --><!-- <div  class="table-section"><el-dialog v-model="showTable" title="" width="500" align-center><el-table :data="tableData" style="width: 100%" ><el-table-column prop="name" label="名称" /><el-table-column prop="value" label="值" /><el-table-column  label="编辑" ><template #default="scope"><el-button type="primary" @click="btnView(scope.row)">查看</el-button></template></el-table-column></el-table></el-dialog></div> --></div></div>
</template><script lang='ts'>
import { ref, reactive, toRefs, onUnmounted, onMounted } from "vue";
import { useRouter, useRoute } from "vue-router"; //引入路由
import * as echarts from "echarts";
export default {name: "",setup() {let router = useRouter(),route = useRoute();// 图标数据const chartOptions: any = [{title: [{left: "left",text: "违规命中统计",}],legend: {data: ['违规规则', 'Union Ads']},xAxis: {type: "category",data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],},yAxis: {type: "value",},series: [{ name: '违规规则',data: [120, 200, 150, 80, 70, 110, 130],type: "bar",itemStyle: {color: "#23e3fb", },},],tooltip: {// 这里暂时不设置 formatter}},{title: [{left: "left",text: "违规门店统计",}],legend: {data: ['违规门店', 'Union Ads']},tooltip: {// 这里暂时不设置 formatter},xAxis: {type: "category",data: ["1", "2", "3", "4", "5", "6", "7"],},yAxis: {type: "value",},series: [{data: [120, 200, 150, 80, 70, 110, 130],type: "bar",name: '违规门店',itemStyle: {color: "#23e3fb", },},],},{title: [{left: "left",text: "违规坐席统计",}],legend: {data: ['违规坐席', 'Union Ads']},tooltip: {// 这里暂时不设置 formatter},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",name:'违规坐席'},],},];const data: any = reactive({});const chartRefs = ref<HTMLDivElement[]>([]);const charts = ref<echarts.ECharts[]>([]);onMounted(() => {chartOptions.forEach((option, index) => {if (chartRefs.value[index]) {const chart = echarts.init(chartRefs.value[index]);const finalOption = {...option,tooltip: {...option.tooltip,}};chart.setOption(finalOption);charts.value[index] = chart;}});});onUnmounted(() => {charts.value.forEach(chart => {if (chart) {chart.dispose();}});});const refData = toRefs(data);return {...refData,chartOptions,chartRefs,};},
};
</script><style lang="scss" scoped>
</style>

点击单个图表可显示弹框

点击图表单个柱状图显示对应的表格弹框操作

在这里插入图片描述

<template><div class="main"><div class="section"><div class="section" v-for="(chartOption, index) in chartOptions" :key="index"><div :ref="el => chartRefs[index] = el" style="width:1400px;height: 400px"></div></div><!-- 隐藏表格 --><div  class="table-section"><el-dialog v-model="showTable" title="" width="500" align-center><el-table :data="tableData" style="width: 100%" ><el-table-column prop="name" label="名称" /><el-table-column prop="value" label="值" /><el-table-column  label="编辑" ><template #default="scope"><el-button type="primary" @click="btnView(scope.row)">查看</el-button></template></el-table-column></el-table></el-dialog></div></div></div>
</template>
<script lang='ts'>
import { ref, reactive, toRefs, onUnmounted, onMounted } from "vue";
import { useRouter, useRoute } from "vue-router"; //引入路由
import * as echarts from "echarts";
export default {name: "",setup() {let router = useRouter(),route = useRoute();// 图标数据const chartOptions: any = [{title: [{left: "left",text: "违规命中统计",}],legend: {data: ['违规规则', 'Union Ads']},xAxis: {type: "category",data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],},yAxis: {type: "value",},series: [{ name: '违规规则',data: [120, 200, 150, 80, 70, 110, 130],type: "bar",itemStyle: {color: "#23e3fb", },},],tooltip: {// 这里暂时不设置 formatter}},{title: [{left: "left",text: "违规门店统计",}],legend: {data: ['违规门店', 'Union Ads']},tooltip: {// 这里暂时不设置 formatter},xAxis: {type: "category",data: ["1", "2", "3", "4", "5", "6", "7"],},yAxis: {type: "value",},series: [{data: [120, 200, 150, 80, 70, 110, 130],type: "bar",name: '违规门店',itemStyle: {color: "#23e3fb", },},],},{title: [{left: "left",text: "违规坐席统计",}],legend: {data: ['违规坐席', 'Union Ads']},tooltip: {// 这里暂时不设置 formatter},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",name:'违规坐席'},],},];const initParams = (params: any) => {let tooltipContent = '';const bullet = '<span style="display: inline-block; width: 10px; height: 10px; background-color:#23e3fb; border-radius: 50%; margin-right: 5px;"></span>';if (Array.isArray(params)) {// 多个数据项params.forEach((param) => {tooltipContent += `${param.seriesName}<br/>${bullet}${param.name} &nbsp; ${param.value}<br/>`;});} else {// 单个数据项tooltipContent += `${params.seriesName}<br/>${bullet}${params.name} &nbsp; ${params.value}<br/>`;}return tooltipContent;};const data: any = reactive({// chartOptions:chartOptions,//也可在这里赋值使用(也可定义并暴露出去)showTable:false,//点击图标显示弹框表格tableData:[]=[],//弹框表格数据});const chartRefs = ref<HTMLDivElement[]>([]);const charts = ref<echarts.ECharts[]>([]);const handleChartClick = (params: any) => {data.showTable = true;data.tableData = [{ name: params.seriesName, value: params.value },{ name: '日期', value: params.name },// 可以根据需要添加更多字段];};onMounted(() => {chartOptions.forEach((option, index) => {if (chartRefs.value[index]) {const chart = echarts.init(chartRefs.value[index]);const finalOption = {...option,tooltip: {...option.tooltip,formatter: initParams}};chart.setOption(finalOption);chart.on('click', handleChartClick);charts.value[index] = chart;}});});onUnmounted(() => {charts.value.forEach(chart => {if (chart) {chart.dispose();}});});const refData = toRefs(data);return {...refData,chartOptions,chartRefs,initParams};},
};
</script><style lang="scss" scoped>
</style>

词图云

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/493477.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows server 服务器网络安全管理之防火墙出站规则设置

Windows server 服务器网络安全管理之防火墙出站规则设置 创建一条出站规则 这条出站规则针对IE浏览器设置&#xff0c;指定路径 TCP协议和指定端口&#xff08;多个端口的写法要注意&#xff09; 所有IP&#xff0c;所有应用&#xff0c;都采用阻止 给这条规则进行命名…

jmeter 接口性能测试 学习笔记

目录 说明工具准备工具配置jmeter 界面汉化配置汉化步骤汉化结果图 案例1&#xff1a;测试接口接口准备线程组添加线程组配置线程组值线程数&#xff08;Number of Threads&#xff09;Ramp-Up 时间&#xff08;Ramp-Up Period&#xff09;循环次数&#xff08;Loop Count&…

Pytorch | 从零构建ResNet对CIFAR10进行分类

Pytorch | 从零构建ResNet对CIFAR10进行分类 CIFAR10数据集ResNet核心思想网络结构创新点优点应用 ResNet结构代码详解结构代码代码详解BasicBlock 类ResNet 类ResNet18、ResNet34、ResNet50、ResNet101、ResNet152函数 训练过程和测试结果代码汇总resnet.pytrain.pytest.py 前…

gpu硬件架构

1.简介 NVIDIA在视觉计算和人工智能&#xff08;AI&#xff09;领域处于领先地位&#xff1b;其旗舰GPU已成为解决包括高性能计算和人工智能在内的各个领域复杂计算挑战所不可或缺的。虽然它们的规格经常被讨论&#xff0c;但很难掌握各种组件的清晰完整的图景。 这些GPU的高性…

Java中的方法重写:深入解析与最佳实践

在Java编程中&#xff0c;方法重写&#xff08;Method Overriding&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心概念之一。它允许子类提供一个与父类中同名方法的具体实现&#xff0c;从而实现多态性&#xff08;Polymorphism&#xff09;。本文将深入探讨Java…

使用vcpkg安装opencv>=4.9后#include<opencv2/opencv.hpp>#include<opencv2/core.hpp>无效

使用vcpkg安装opencv>4.9后#include<opencv2/opencv.hpp>#include<opencv2/core.hpp>无效\无法查找或打开 至少从2024年开始&#xff0c;发布的vcpkg默认安装的opencv版本都是4.x版。4.8版本及以前&#xff0c;vcpkg编译后的opencv头文件目录是*/vcpkg/x64-win…

基于java web在线商城购物系统源码+论文

一、环境信息 开发语言&#xff1a;JAVA JDK版本&#xff1a;JDK8及以上 数据库&#xff1a;MySql5.6及以上 Maven版本&#xff1a;任意版本 操作系统&#xff1a;Windows、macOS 开发工具&#xff1a;Idea、Eclipse、MyEclipse 开发框架&#xff1a;SpringbootHTMLjQueryMysq…

基于字节大模型的论文翻译(含免费源码)

基于字节大模型的论文翻译 源代码&#xff1a; &#x1f44f; star ✨ https://github.com/boots-coder/LLM-application 展示 项目简介 本项目是一个基于大语言模型&#xff08;Large Language Model, LLM&#xff09;的论文阅读与翻译辅助工具。它通过用户界面&#xff08…

centos7下docker 容器实现redis主从同步

1.下载redis 镜像 docker pull bitnami/redis2. 文件夹授权 此文件夹是 你自己映射到宿主机上的挂载目录 chmod 777 /app/rd13.创建docker网络 docker network create mynet4.运行docker 镜像 安装redis的master -e 是设置环境变量值 docker run -d -p 6379:6379 \ -v /a…

实现 WebSocket 接入文心一言

目录 什么是 WebSocket&#xff1f; 为什么需要 WebSocket&#xff1f; HTTP 的局限性 WebSocket 的优势 总结&#xff1a;HTTP 和 WebSocket 的区别 WebSocket 的劣势 WebSocket 常见应用场景 WebSocket 握手过程 WebSocket 事件处理和生命周期 WebSocket 心跳机制 …

机动车油耗计算API集成指南

机动车油耗计算API集成指南 引言 在当今社会&#xff0c;随着机动车数量的持续增长和环保意识的不断增强&#xff0c;如何有效管理和降低车辆油耗成为了车主、车队管理者以及交通政策制定者共同关注的问题。为了帮助这些群体更好地理解和优化燃油消耗情况&#xff0c;本接口能…

前端yarn工具打包时网络连接问题排查与解决

最近线上前端打包时提示 “There appears to be trouble with your network connection”&#xff0c;以此文档记录下排查过程。 前端打包方式 docker启动临时容器打包&#xff0c;命令如下 docker run --rm -w /app -v pwd:/app alpine-node-common:v16.20-pro sh -c "…

IIC I2C子协议 SMBus协议 通信协议原理 时序 SMBus深度剖析

引言&#xff1a;系统管理总线&#xff08;SMBus&#xff09;是一种双线接口&#xff0c;通过该接口&#xff0c;各种系统组件芯片和设备可以相互以及与系统其他部分通信。它基于IC总线的操作原理。附录B提供了一些SMBus特性与IC总线不同的方式的描述。 SMBus为系统和电源管理相…

【Lua热更新】上篇

Lua 热更新 - 上篇 下篇链接&#xff1a;【Lua热更新】下篇 文章目录 Lua 热更新 - 上篇一、AssetBundle1.理论2. AB包资源加载 二、Lua 语法1. 简单数据类型2.字符串操作3.运算符4.条件分支语句5.循环语句6.函数7. table数组8.迭代器遍历9.复杂数据类型 - 表9.1字典9.2类9.3…

React图标库: 使用React Icons实现定制化图标效果

React图标库: 使用React Icons实现定制化图标效果 图标库介绍 是一个专门为React应用设计的图标库&#xff0c;它包含了丰富的图标集合&#xff0c;覆盖了常用的图标类型&#xff0c;如FontAwesome、Material Design等。React Icons可以让开发者在React应用中轻松地添加、定制各…

如何使用 WebAssembly 扩展后端应用

1. WebAssembly 简介 随着互联网的发展&#xff0c;越来越多的应用借助 Javascript 转到了 Web 端&#xff0c;但人们也发现&#xff0c;随着移动互联网的兴起&#xff0c;需要把大量的应用迁移到手机端&#xff0c;随着手端的应用逻辑越来越复杂&#xff0c;Javascript 的解析…

Fastdfs V6.12.1集群部署(arm/x86均可用)

文章目录 一、 Fastdfs 介绍二、部署 信息三、步骤tracker/storage 机器的 compose 内容storage 机器的 composetracker 与 storage 启动目录层级与配置文件测试测试集群扩容与缩减注意事项 一、 Fastdfs 介绍 FastDFS 是一款高性能的分布式文件系统&#xff0c;特别适合用于存…

maven-resources-production:ratel-fast: java.lang.IndexOutOfBoundsException

Maven生产环境中遇到java.lang.IndexOutOfBoundsException的问题&#xff0c;尝试了重启电脑、重启IDEA等常规方法无效&#xff0c;最终通过直接重建工程解决了问题。 Rebuild Project 再启动OK

1. JasperSoft介绍与安装

Jaspersoft介绍 Jaspersoft是一款开源的&#xff0c;强大灵活并且使用广泛的报表软件。能够展示丰富的页面内容&#xff0c;并将之转换成PDF、HTML或者XML格式&#xff0c;该库完全由Java写出&#xff0c;可以用于在各种Java应用程序&#xff0c;非常适合Java开发者用来做报表生…

知网研学 | 知网文献(CAJ+PDF)批量下载

知网文献&#xff08;CAJPDF&#xff09;批量下载 一、知网研学安装二、插件及脚本安装三、CAJ批量下载四、脚本下载及PDF批量下载浏览器取消拦截窗口 一、知网研学安装 批量下载知网文件&#xff0c;格式为es6文件&#xff0c;需使用知网研学软件打开&#xff0c;故需先安装该…