echarts 实现3D立体柱状图示例

该示例有如下几个特点:

        ①实现tooltip自定义样式(echarts 实现tooltip提示框样式自定义-CSDN博客)

        ②数据为0时,顶部四边形不展示

        ③legend图标设置为自定义图片

【第②也是一个难点,我没有找到其他解决办法,暂时就把color写成函数进行判断,数据为0时设置颜色透明,若有其他更好的解决办法,相互交流呀~】

代码如下:

<template><div class="content"><Echartid="aircraftDistributionChart":options="options":height="height":width="width":clickFn="getDetailInfo"/></div>
</template><script>
import Echart from "@/components/Echart/index.vue";
import * as echarts from "echarts";
export default {name: "aircraftDistributionChart",props: ["width", "height"],components: {Echart},data() {return {type: 0,options: {},xAxisData: ["机场1", "机场2"],legendData: [],seriesData: {"飞机1": [3,5],"飞机2": [4,2],"飞机3": [0,4]},title: "飞机分布",loadingStyle: null,data: [],clientWidth: document.body.clientWidth,colorList: [{offset0: "#00FCFF",offset1: "#00A8FF",},{offset0: "#FFE8D6",offset1: "#FFA800",},{offset0: "#A1C1FF",offset1: "#654BFF",},{offset0: "#05FF00",offset1: "#EAFFD6",},{offset0: "#FFC7DB",offset1: "#FF1485",},{offset0: "#FFB8B2",offset1: "#FF7165",},{offset0: "#E8CCFF",offset1: "#AF82FB",},{offset0: "#CAF6FB",offset1: "#2DDBF0",},{offset0: "#FFF8CB",offset1: "#FFEA53",},{offset0: "#FCC2EE",offset1: "#F970D7",},],};},mounted() {this.getData();},methods: {async getDetailInfo(e) {},async getData() {let that = this;let data = JSON.parse(JSON.stringify(this.seriesData));let tempData = Object.keys(data);this.legendData = [];this.seriesData = [];for (let i = 0; i < tempData.length; i++) {let temKey = tempData[i];let leg = {name: tempData[i],icon: "path://M 869.188 431.844 H 726.763 L 471.95 118.25 h -117.563 l 117.563 313.594 H 231.875 L 131.469 352.25 H 62 l 59.175 236.419 h 350.775 l -117.563 313.594 h 117.563 l 254.813 -313.594 h 196.031 c 16.875 0 39.2062 0 39.2062 -39.2062 c 0 -52.0875 -40.6125 -117.563 -92.8125 -117.563 Z",};let arr = [{name: temKey,type: "bar",barWidth: 16,itemStyle: {normal: {color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{//只要修改前四个参数就okoffset: 0,color: that.colorList[i].offset0,}, //柱图渐变色{offset: 1,color: that.colorList[i].offset1,},]),barBorderRadius: [0, 0, 0, 0],opacity: "1",},},data: data[temKey],barGap: "20%",},{name: temKey,tooltip: {show: false,},type: "pictorialBar",itemStyle: {normal: {color: function (params) {if (params.value == 0) {return "rgba(255,255,255,0)";} else {return new echarts.graphic.LinearGradient(0,1,0,0,[{//只要修改前四个参数就okoffset: 0,color: that.colorList[i].offset0,}, //柱图渐变色{offset: 1,color: that.colorList[i].offset1,},]);}},borderWidth: 1,borderColor: "rgba(0,252,255,0.6)",opacity: "1",shadowColor: "rgb(0,0,0,0.1)",shadowOffsetX: "0.5",shadowOffsetY: "0.5",},},symbol: "rect",symbolRotate: 45,symbolSize: ["12", "12"],symbolOffset: [(tempData.length - 1) * -9.5 + i * 19, "-8"],symbolPosition: "end",data: data[temKey],z: 3,},];this.legendData.push(leg);this.seriesData = this.seriesData.concat(arr);}this.creatChart();},// 根据屏幕宽度处理数据handleWidth(data) {return ((this.clientWidth / 1920) * data).toFixed(0);},creatChart() {this.options = {tooltip: {trigger: "axis",axisPointer: {type: "shadow"},textStyle: {align: "left"},className: "custom-tooltip-box",formatter: function (params) {let tip = "";for (let i = 0; i < params.length; i++) {let a = "";a = `<div class="span"><span>${params[i].seriesName}:</span><span>${params[i].value} 架</span></div>`;tip = tip + a;}let height = params.length * 3.3 + 5;return `<div class='custom-tooltip-style' style="height: ${height}rem"><span>${params[0].name}</span></br>${tip}`;}},legend: {type: "scroll",data: this.legendData,align: "left",right: 10,textStyle: {color: "#ffffff"},pageTextStyle: {color: "#35ffff",fontSize: this.handleWidth(12)},pageIconColor: "#aaa",pageIconInactiveColor: "#555657",textStyle: {color: "#C7F1FF",fontSize: this.handleWidth(12)},itemWidth: 20,itemHeight: 20,itemGap: 15,// 暂时设置不能点击selectedMode: false},grid: {top: "25%",left: "5%",right: "5%",bottom: "6%",containLabel: true},xAxis: [{type: "category",nameTextStyle: {color: "#5C6C75"},offset: 6,axisLine: {show: true,lineStyle: {color: "#355d8d" // 坐标轴线线的颜色}},splitLine: {show: false},axisTick: {show: false},axisLabel: {show: true,textStyle: {color: "#fff" //X轴文字颜色},fontSize: "12", //x轴字体大小rotate: 15},data: this.xAxisData}],yAxis: [{type: "value",name: "单位:架",nameTextStyle: {fontSize: this.handleWidth(12),color: "#FFFFFF99"},axisLabel: {show: true,margin: 14,fontSize: 12,textStyle: {color: "#FFFFFF99"}},axisTick: {show: false},axisLine: {show: false},splitLine: {show: true,lineStyle: {color: "#87C2FF66",width: 0.7,type: "dashed"}}}],series: this.seriesData}}}
};
</script><style lang="scss" scoped>
.content {width: 100%;height: 100%;margin-top: 1.5rem;
}
::v-deep .custom-tooltip-box {padding: 0 !important;border: none !important;background-color: transparent !important;// 给子盒子自定义样式.custom-tooltip-style {width: 18rem;min-height: 8rem;background: url("../../../../assets/images/tooltip-bg-big1.png") no-repeatcenter center;background-size: 100% 100%;color: #fff;display: flex;flex-direction: column;justify-content: space-around;padding: 1rem 2rem;font-size: 1.4rem;.span {display: flex;justify-content: space-between;margin-top: 0.5rem;:last-child {font-weight: 600;font-size: 1.4rem;}}}
}
</style>

效果图如下:

该示例中的属性可在官网中查阅,若有其他疑问可私信留言互相交流学习~

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

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

相关文章

从小米14安装不上应用说起【适配64位】

一、原因 某天早上&#xff0c;同事突然对我说我换了小米14pro手机但是安装不了公司的打卡软件&#xff0c;怎么办呀。一时间&#xff0c;我也不知道原因&#xff0c;看到给我发的安装不上的截图陷入了沉思。随即打开在git仓库里找到这个项目&#xff0c;到本地编译打开&#…

对比学习15篇顶会论文及代码合集,2023最新

对比学习&#xff08;contrastive learning&#xff09;是现在无监督学习中一种常用的学习机制&#xff0c;它可以在没有标签的数据上进行学习&#xff0c;避免依赖大量标签数据&#xff0c;从而帮助我们更好地理解和利用数据集中的信息&#xff0c;提高模型的性能和表现。 作…

【前端学java】java中的字符串操作(10)

往期回顾&#xff1a; 【前端学java】JAVA开发的依赖安装与环境配置 &#xff08;0&#xff09;【前端学 java】java的基础语法&#xff08;1&#xff09;【前端学java】JAVA中的packge与import&#xff08;2&#xff09;【前端学java】面向对象编程基础-类的使用 &#xff08…

springcloud学生选课系统源码

开发技术&#xff1a; jdk1.8&#xff0c;mysql5.7&#xff0c;idea&#xff0c;nodejs&#xff0c;vscode springcloud springboot mybatis vue elementui 功能介绍&#xff1a; 学生&#xff1a; 登录&#xff0c;统计分析&#xff0c;选课&#xff08;查看课程及选择&a…

API网关那些事【架构新知系列】

目前随着云原生ServiceMesh和微服务架构的不断演进&#xff0c;网关领域新产品不断出现&#xff0c;各种网关使用的技术&#xff0c;功能和应用领域也不断扩展&#xff0c;在各有所长的前提下也有很多功能重合&#xff0c;网上各种技术PR文章&#xff0c;评测资料和网关落地实践…

新能源充电桩工业4G路由器应用,推动绿色出行,响应环保理念

在智慧城市环保事业发展领域&#xff0c;新能源技术应用成熟&#xff0c;物联网技术越来越广泛&#xff0c;充电桩物联网成为了智慧城市建设的热门应用。充电桩作为新能源汽车的重要配套设施&#xff0c;对于节能减排和推动环保理念可持续发展具有重要意义。而工业4G路由器作为…

福州大学《嵌入式系统综合设计》实验四:边缘检测

一、实验目的 BMCV 提供了一套基于 Sophon AI 芯片优化的机器视觉库&#xff0c;通过利用芯片的 TPU 和 VPP模块&#xff0c;可以完成色彩空间转换、尺度变换、仿射变换、透射变换、线性变换、画框、JPEG 编解码、BASE64 编解码、NMS、排序、特征匹配等操作。 本实验的目的是…

C++中的内存管理

✨前言✨ &#x1f4d8; 博客主页&#xff1a;to Keep博客主页 &#x1f646;欢迎关注&#xff0c;&#x1f44d;点赞&#xff0c;&#x1f4dd;留言评论 ⏳首发时间&#xff1a;2023年11月21日 &#x1f4e8; 博主码云地址&#xff1a;博主码云地址 &#x1f4d5;参考书籍&…

基于C#实现KMP算法

一、BF 算法 如果让你写字符串的模式匹配&#xff0c;你可能会很快的写出朴素的 bf 算法&#xff0c;至少问题是解决了&#xff0c;我想大家很清楚的知道它的时间复杂度为 O&#xff08;MN&#xff09;&#xff0c;原因很简单&#xff0c;主串和模式串失配的时候&#xff0c;我…

电脑便签工具推荐哪个?电脑上好用的便签软件使用哪一款

对于职场办公人士来讲&#xff0c;一款好用的电脑便签工具可以给日常工作带来极大的便利&#xff0c;如果您的日常工作离不开电脑工具&#xff0c;您就会知晓电脑便签工具在日常工作中的重要&#xff0c;电脑便签通常以一个小的窗口呈现在电脑桌面上&#xff0c;记录一些工作中…

KVM网络环境下vlan和trunk的理解

vmware exsi 平台&#xff0c;虚拟交换机管理界面的上行链路是什么意思 VMware ESXi中的虚拟交换机管理界面中的“上行链路”&#xff08;uplinks&#xff09;是指虚拟交换机连接到物理网络的物理网络适配器。在ESXi中&#xff0c;虚拟交换机&#xff08;vSwitch&#xff09;用…

JAXB:根据Java文件生成XML schema文件

说明 JAXB有个schemagen脚本&#xff0c;可以根据Java文件生成XML schema。这个工具在JAXB独立发布包中有&#xff0c;可以从官网下载JAXB的独立发布包&#xff1a; https://eclipse-ee4j.github.io/jaxb-ri/ 示例 使用schemagen -d <path> <java files>格式 …

安装rabbitMQ

安装rabbitMQ linux安装rabbitMQ centos7下 需要先安装JDK 安装Erlang 需对应版本 安装对应版本的rabbitMQ 参考&#xff1a;CentOS7安装RabbitMQ简单实用教程_普通网友的博客-CSDN博客 启动 systemctl start rabbitmq-server出现的问题 启动失败 Job for rabbitmq-ser…

顺序表和链表

1.线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直线…

最新最全系列之Selenium:传入webdriver驱动的新方法 Service()函数;以前的executable_path报警告,即将弃用

传入webdriver驱动的新方法 Service()函数&#xff1b;以前的executable_path报警告&#xff0c;即将弃用 以前的方法 举例&#xff1a;webdriver.Chrome(executable_pathdriver_path)&#xff1b;看提示警告&#xff0c;提示该方法即将被弃用&#xff1b;如下图&#xff1a; …

mysql底层是如何存放数据的

总览 首先总的来说&#xff0c;分为四个层级&#xff0c;行页区段。行就是数据库里的一行数据。 但一次从磁盘读进内存的数据量是一页&#xff08;页是读写的单位&#xff0c;默认16KB一页&#xff09;&#xff0c;页分很多种类&#xff0c;例如数据页、溢出页、undo日志页。 …

工业领域的设备“监测”和“检测”有何区别?

在工业领域中&#xff0c;设备的监测和检测是关键的运维活动&#xff0c;它们在保障设备可靠性和生产效率方面发挥着重要作用。尽管这两个术语经常被人们混为一谈&#xff0c;但它们在含义和应用上存在一些关键区别。 "监测"与"检测"的概念 1. 监测&#…

使用wxPython和PyMuPDF合并PDF文档并自动复制到剪贴板

导语&#xff1a;处理大量的PDF文档可能会变得复杂和耗时。但是&#xff0c;使用Python编程和一些强大的库&#xff0c;如wxPython和PyMuPDF&#xff0c;可以使这个任务变得简单而高效。本文将详细解释一个示例代码&#xff0c;展示如何使用这些库来创建一个可以选择文件夹中的…

C#学习相关系列之Linq常用方法---排序(一)

一、构建数据 public class Student_1{public int ID { get; set; }public string Name { get; set; }public int Chinese { get; set; }public int Math { get; set; }public int English { get; set; }public override string ToString(){return string.Format("ID:{0},…

从零开始 通义千问大模型本地化到阿里云通义千问API调用

从零开始 通义千问大模型本地化到阿里云通义千问API调用 一、通义千问大模型介绍 何为“通义千问”&#xff1f; “通义千问大模型”是阿里云推出的一个超大规模的语言模型&#xff0c;具有强大的归纳和理解能力&#xff0c;可以处理各种自然语言处理任务&#xff0c;包括但…