echarts漏斗图自定义漏斗颜色、粗细、大小、间隔缝隙
目录
1、官网找样例
2、初步改造示例,有个雏形
3、细节改造和优化
4、全部代码
5、原始效果和完成效果对比
碎碎念:
UI效果图是这样的
看到之后我一脸懵,按照常规阶梯思路,我又开始了度娘之旅。
1、官网找样例
样例官网地址
把样例的option复制到本地,
原始option代码:
let demoOption = {title: {text: 'Funnel'},tooltip: {trigger: 'item',formatter: '{a} <br/>{b} : {c}%'},toolbox: {feature: {dataView: { readOnly: false },restore: {},saveAsImage: {}}},legend: {data: ['Show', 'Click', 'Visit', 'Inquiry', 'Order']},series: [{name: 'Expected',type: 'funnel',left: '10%',width: '80%',label: {formatter: '{b}Expected'},labelLine: {show: false},itemStyle: {opacity: 0.7},emphasis: {label: {position: 'inside',formatter: '{b}Expected: {c}%'}},data: [{ value: 60, name: 'Visit' },{ value: 40, name: 'Inquiry' },{ value: 20, name: 'Order' },{ value: 80, name: 'Click' },{ value: 100, name: 'Show' }]},{name: 'Actual',type: 'funnel',left: '10%',width: '80%',maxSize: '80%',label: {position: 'inside',formatter: '{c}%',color: '#fff'},itemStyle: {opacity: 0.5,borderColor: '#fff',borderWidth: 2},emphasis: {label: {position: 'inside',formatter: '{b}Actual: {c}%'}},data: [{ value: 30, name: 'Visit' },{ value: 10, name: 'Inquiry' },{ value: 5, name: 'Order' },{ value: 50, name: 'Click' },{ value: 80, name: 'Show' }],// Ensure outer shape will not be over inner shape when hover.z: 100}]
};
得到的效果是这样的:
2、初步改造示例,有个雏形
- 去掉图例legend
- 剥离外层漏斗图
- 去掉小工具栏和标题
代码改动的地方:
得到的效果如下图:
3、细节改造和优化
接下来就开始精修之路^_^
- 去掉白色边线
- 数据元素减少为3个
- 增加元素之间的缝隙
- 调整漏斗外形,尤其是底部不是小尖角
- 设置每个元素对应的颜色和要显示的内容
为此代码需要做的改动:
4、全部代码
想要的形状出来之后剩余的就是调整合适大小和背景图。
<template><!-- 漏斗图对比 --><div class="con_bg"><div class="funnelChart" ref="funnelChart"></div><!--echarts实例代码--><div class="funnelDemo" ref="funnelChartDemo"></div></div>
</template>
<script>
import * as echarts from "echarts";var chart = "";
var chartDemo = "";
var funnelChart = "";
export default {name: "",data() {return {};},mounted() {this.showfunnelChart();this.showfunnelChartDemo();},methods: {showfunnelChart() {if (funnelChart != null &&funnelChart != "" &&funnelChart != undefined) {funnelChart.dispose();}funnelChart = echarts.init(this.$refs.funnelChart);let option = {tooltip: {trigger: "item",formatter: "{b} : {c}%",},series: [{name: "Actual",type: "funnel",//left: "10%",//width: "80%",//top和bottom结合来拉伸漏斗的高度top: 0, //漏斗图组件离容器上侧的距离bottom: 0, //漏斗图组件离容器下侧的距离//min和max结合来调整漏斗是敞口还是窄扣min: 10,max: 100,minSize: "48", //数据最小值映射的宽度。如果是0就变成了常规的小尖角maxSize: "148",label: {position: "inside",formatter: "{c}%",color: "#fff",},gap: 4, //设置缝隙大小//图形样式设置// itemStyle: {// opacity: 0.5,// borderColor: "#fff",//注水掉,相当于去掉白边// borderWidth: 2,// },//高亮的标签和图形样式。emphasis: {label: {fontSize: 20,// position: "inside",// formatter: "{b}Actual: {c}%",},},data: [{value: 168,name: "疑似问题",itemStyle: {color: "#1FCFDE",borderColor: "none",},},{value: 50,name: "已确认问题",itemStyle: {color: "#ED9A13",borderColor: "none",},},{value: 10,name: "已解决问题",itemStyle: {color: "#06C90F",borderColor: "none",},},],// Ensure outer shape will not be over inner shape when hover.z: 100,},],};funnelChart.clear();funnelChart.setOption(option);window.addEventListener("resize", () => {funnelChart.resize();});},showfunnelChartDemo() {if (chartDemo != null &&chartDemo != "" &&chartDemo != undefined) {chartDemo.dispose();}chartDemo = echarts.init(this.$refs.funnelChartDemo);let demoOption = {title: {text: "Funnel",},tooltip: {trigger: "item",formatter: "{a} <br/>{b} : {c}%",},toolbox: {feature: {dataView: { readOnly: false },restore: {},saveAsImage: {},},},legend: {data: ["Show", "Click", "Visit", "Inquiry", "Order"],},series: [{name: "Expected",type: "funnel",left: "10%",width: "80%",label: {formatter: "{b}Expected",},labelLine: {show: false,},itemStyle: {opacity: 0.7,},emphasis: {label: {position: "inside",formatter: "{b}Expected: {c}%",},},data: [{ value: 60, name: "Visit" },{ value: 40, name: "Inquiry" },{ value: 20, name: "Order" },{ value: 80, name: "Click" },{ value: 100, name: "Show" },],},{name: "Actual",type: "funnel",left: "10%",width: "80%",maxSize: "80%",label: {position: "inside",formatter: "{c}%",color: "#fff",},itemStyle: {opacity: 0.5,borderColor: "#fff",borderWidth: 2,},emphasis: {label: {position: "inside",formatter: "{b}Actual: {c}%",},},data: [{ value: 30, name: "Visit" },{ value: 10, name: "Inquiry" },{ value: 5, name: "Order" },{ value: 50, name: "Click" },{ value: 80, name: "Show" },],// Ensure outer shape will not be over inner shape when hover.z: 100,},],};chartDemo.clear();chartDemo.setOption(demoOption);window.addEventListener("resize", () => {chartDemo.resize();});},},
};
</script>
<style scoped>
.con_bg {/* background-color: #010c17; */background-image: url("/img/bg.png");width: 490px;height: 590px;border-radius: 3px;position: absolute;left: 50%;top: 50%;-webkit-transform: translate(-50%, -50%);
}
.funnelChart {width: 424px;height: 152px;background-image: url("/img/ld.png");margin: 20px auto;
}.funnelDemo {width: 424px;height: 152px;background-image: url("/img/ld.png");margin: 20px auto;
}
</style>
5、原始效果和完成效果对比
其实和效果图还是有一定差距,但是已经尽力还原
碎碎念:
其实每次拿到UI效果图的时候,我就很激动,因为毕竟是别人的一次创作,但是在实际开发过程中,我也经常思考,到底应该是尽力还原效果图,还是让美工在做效果图的时候多考虑实现的难易程度呢?这中间又该如何找到对应的平衡点呢?答案肯定是无解的。
但是我在工作中也遇到了有些前端为了让自己少写代码,比如能一张背景图解决的就尽量不写css,在还原效果图的过程中更是扯皮说是不好实现,让美工做的简单点。我觉得这样就真的有些过分了,一点都不愿意多思考,当然最后出来的效果不至于差强人意,但也只能just soso……我从心里是特别鄙视的。
所以看到这篇文章的你,是否在心底问过自己:真的尽力了吗?真的到了实现不了的地步吗?
如果说UI图100分的标准,你又能做到多少分的还原呢??
echarts漏斗图自定义漏斗颜色、粗细、大小、间隔缝隙相关推荐
- echarts雷达图自定义射线颜色、边框效果和背景样式
目录 1.在官网找样例 2.初步改造示例,有个雏形 3.细节改造和优化 4.全部代码 5.原始效果和完成效果对比 1.在官网找样例 样例地址:Examples - Apache ECharts 2.初 ...
- echarts 水球图 自定义水球颜色
项目中有一个水球图表示电池电量的需求:电量20%以下时显示红色,20%-30%时显示为黄色,30%以上显示蓝色 var option = {series: [{type: 'liquidFill',d ...
- 2019-7-23 [HTML_CSS] 基本 行内/内部/外部格式 优先级 选择器 字体演 颜色 粗细大小 字体对齐
文章目录 0.网页美化技术 CSS 1 css概述 1.1 什么是CSS? 1.2 CSS的发展史 1.3 CSS的优势 1.4 CSS基本使用 1.5 CSS样式的分类 1.5.1 行内样式 1.5 ...
- echarts折线图分段显示颜色
echarts折线图分段显示颜色 - vue技术交流群(864583465) 1.直接上代码 option = {xAxis: {type: 'category',data: ['Mon', 'Tue ...
- 02 【eCharts样式定制系列】玫瑰图、环形饼图、漏斗图自定义各项数据的颜色
描述 在目前的项目中,根据UI设计稿需要实现一个带有大屏的系统首页,在此首页上要添加地图和一些eCharts图表.但是根据UI设计稿,如果要达到美观的目的,需要对eCharts进行定制.此次需要定制的 ...
- Echarts雷达图自定义样式
效果图: setLeiDaChart(){let myChart = this.$echarts.init(document.getElementById('andonType'));let opti ...
- Echarts环形图--自定义图例文本和中心文字
一.设置环形图中心文字 可用 titel.text 和 title.subtext 来定义中心处的文本 title:{text:subtext: } 用 graphic 原生图形元素组件 每个图形元素 ...
- echarts折线图、echarts折线图自定义样式
html 页面引用js <script type="text/javascript" src="assets/js/echarts.min.js"> ...
- echarts折线图节点改变颜色
更改前 更改后 series: [{name: "收入",type: "line",data: [10, 11, 13, 11, 12, 12, 9],line ...
最新文章
- cds.data:=dsp.data赋值有时会出现AV错误剖析
- python3 乱序函数 shuffle 简介
- libvirt-adabddad
- ccna设备的NAT地址转换
- Flutter ListView封装,下拉刷新、上拉加载更多
- vue中父子组件先后渲染_vue父子组件传值(子传父,非父子组件传值)
- [bzoj4881][Lydsy2017年5月月赛]线段游戏
- python容量变化类型有哪些_python基础数据类型补充以及编码的进阶
- [vscode] markdown_index----可以为你的markdown标题添加序号的插件
- 自己在总结前人经验下弄的几个opencv封装函数
- 【洛谷 P4291】 [HAOI2008]排名系统(Splay,Trie)
- win和linux双系统安装教程
- 婚纱摄影后期修片,PS婚纱写真后期…
- fedora mysql添加密码_Fedora14下 mysql更改密码
- Linux性能基础:CPU、内存、磁盘等概述
- DM数据库实例迁移教程
- python RTL自动生成_实例16:用Python自动生成Excel档每日领料单
- java 汉字笔画_java如何获取笔画
- Grad-CAM可视化
- QT .pro文件详解