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

echarts双柱状图支持点击并高亮当前点击柱子

echarts点击并高亮当前点击柱子

  • 实现效果图
  • 完整代码
  • 当同时有多个图表,但高亮状态只有一个时

实现效果图

在这里插入图片描述

上图操作描述:点击某柱子高亮当前柱子,且可获取当前柱子数据进行其他操作。

完整代码

<template><div id="echartsCon" />
</template><script>export default {methods: {async echartsConEcharts() {var dom = document.getElementById("echartsCon");var myChart = echarts.init(dom, null, {renderer: "canvas",useDirtyRect: false,});var checkName = ""; // 点击柱子的名字var checkSeriesName = ""; // 点击柱子的类型(系列名称)myChart.showLoading(); // 开启 loading 状态 开始渲染// 模拟数据获取,实际使用时替换为真实的 API 调用const mockData = [{ name: "名字1", online: 40, offline: 20 },{ name: "名字2", online: 15, offline: 18 },{ name: "名字3", online: 25, offline: 20 },{ name: "名字4", online: 50, offline: 35 },{ name: "名字5", online: 30, offline: 25 },{ name: "名字6", online: 35, offline: 25 },{ name: "名字7", online: 20, offline: 15 },];// 将模拟数据转换为 ECharts 所需的格式const allName = mockData.map((item) => item.name);const onlineData = mockData.map((item) => item.online * 10000); // 转换为 "万" 单位const offlineData = mockData.map((item) => item.offline * 10000); // 转换为 "万" 单位let option = {title: {text: "XXX统计",left: "left",},tooltip: {trigger: "axis",axisPointer: {type: "shadow",},},legend: {data: [{name: "在线",itemStyle: {color: "#1890ff", // 设置在线图例的颜色},},{name: "不在线",itemStyle: {color: "#fa8c16", // 设置不在线图例的颜色},},],right: "5%",},grid: {left: "3%",right: "4%",bottom: "3%",containLabel: true,},xAxis: [{type: "category",data: allName,axisLabel: {interval: 0,rotate: 0,},},],yAxis: [{type: "value",name: "",axisLabel: {formatter: function (value) {return value / 10000 + "万";},},},],series: [{name: "在线",type: "bar",data: onlineData,itemStyle: {normal: {color: function (params) {// 如果点击的名称和当前柱子的名称以及系列名称都匹配,则高亮显示return checkName === params.name &&checkSeriesName === params.seriesName? "#4c73f7": "#1890ff";},},},},{name: "不在线",type: "bar",data: offlineData,itemStyle: {normal: {color: function (params) {// 如果点击的名称和当前柱子的名称以及系列名称都匹配,则高亮显示return checkName === params.name &&checkSeriesName === params.seriesName? "#4c73f7": "#fa8c16";},},},},],};myChart.setOption(option);myChart.hideLoading();myChart.on("click", function (params) {console.log("params:", params);if (params.componentType === "series") {checkName = params.name;checkSeriesName = params.seriesName;option.series[0].itemStyle.normal.color = function (params) {return checkName === params.name &&checkSeriesName === params.seriesName? "#4c73f7": "#1890ff";};option.series[1].itemStyle.normal.color = function (params) {return checkName === params.name &&checkSeriesName === params.seriesName? "#4c73f7": "#fa8c16";};myChart.setOption(option);}});window.addEventListener("resize", myChart.resize);}}
}
</script>

当同时有多个图表,但高亮状态只有一个时

点击某一个柱子时,重置其他图标的高亮状态且保持dataZoom状态的方法

 //  重置某一个图表的柱子颜色,并保持dataZoom状态resetOtherChartColors(chartId) {var otherDom = document.getElementById(chartId);if (otherDom) {var otherChart = echarts.getInstanceByDom(otherDom);if (otherChart) {var otherOption = otherChart.getOption();// 保存当前的 dataZoom 状态var savedDataZoom = otherOption.dataZoom;// 重置柱子颜色为默认值otherOption.series[0].itemStyle = {normal: {color: "#1890ff",},};otherOption.series[1].itemStyle = {normal: {color: "#fa8c16",},};// 恢复 dataZoom 状态if (savedDataZoom) {otherOption.dataZoom[0].start = savedDataZoom[0].start;otherOption.dataZoom[0].end = savedDataZoom[0].end;otherOption.dataZoom[1].start = savedDataZoom[1].start;otherOption.dataZoom[1].end = savedDataZoom[1].end;}otherChart.setOption(otherOption);}}}

相关文章:

  • 【大模型】Bert变种
  • 序列化与反序列化
  • GitHub 趋势日报 (2025年05月28日)
  • DeepSeekMath:突破开放式语言模型中数学推理能力的极限
  • 基于 GitLab CI + Inno Setup 实现 Windows 程序自动化打包发布方案
  • 【unity游戏开发——编辑器扩展】EditorApplication公共类处理编辑器生命周期事件、播放模式控制以及各种编辑器状态查询
  • 【Linux网络编程】传输层协议TCP,UDP
  • 记录一个难崩的bug
  • 从零开始的云计算生活——第十四天,困难重重,安全管理。
  • 社群分享:义乌|杭州电商|店群卖家,私域鱼塘运营的排单系统开源|私域鱼塘运营|返款软件开源
  • Azure Devops pipeline 技巧和最佳实践
  • 新版LangChain向量数据库VectorStore设计详解
  • 关于智能体接入后端,在Apifox能够传参数给智能体的测试
  • 云原生与DevOps融合实践:加速企业数字化转型的加速器
  • 群辉(synology)NAS老机器连接出现网页端可以进入,但是本地访问输入一样的账号密码是出现错误时解决方案
  • VSCode的下载与安装(2025亲测有效)
  • 生益的高速PCB板材有哪些
  • 使用 Azure DevOps 管道部署到本地服务器
  • Java设计模式之中介者模式详解
  • 结构性设计模式之Bridge(桥接)
  • 宁波创建网站/网站模板中心
  • 互联网app开发/独立站seo优化
  • 网站建设规范/济南网站推广
  • wordpress 菜单 导航/百度快照优化公司
  • 简单好看个人主页网站模板/地推放单平台
  • 萝岗网站开发/网站seo优化免费