三年疫情已经远去,大数据 已被千家万户所熟知。随着大数据的流行,很多公司数据大屏到处可见。作为前端开发,也面对着各式各样花里胡哨的UI设计,会经常遇到一个图表配上各种渐变色。本文就讲讲在 Echarts 中如何配置渐变色。

echarts 渐变色

前言

众所周知,echarts 默认是以 Canvas 为画布绘制各种图形的。所以不能用 CSS3 的方式设置渐变色。 有需求当然就会有解决办法,echarts 内置了 echarts.graphic 渐变生成器。

echarts.graphic.LinearGradient

示例:

new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: '#fff' }, { offset: 0.5, color: '#f00' }, { offset: 1, color: '#00f' } ] )

参数说明:

  1. 前四个参数用于配置渐变色的起止位置,这4个参数依次对应 右 / 下 / 左 / 上 四个方位,上边 0 0 0 1 则表示是从上到下的渐变。
  2. 第5个参数则是一个数组,用于配置颜色的渐变过程,每一项为一个对象,包含 offset 和 color 两个参数。offset 的范围是 0 ~ 1 , 用于表示位置,color 表示颜色。
  3. 以上生成的渐变色用 CSS3 来写就是这样:
.box { background: linear-gradient(#fff 0%, #f00 50%, #00f 100%); }

echarts 渐变色配置示例

简单封装一下 echarts.graphic.LinearGradient 方法

// common/utils.js export default { /* 获取 echarts 渐变色 */ getEChartsLinearColors(params = {}) { const ps = params.position || [0, 0, 0, 1]; // [右,下,左,上] return new echarts.graphic.LinearGradient( ...ps, [ {offset: 0, color: params.colors[0]}, {offset: 1, color: params.colors[1]}, ], ); }, }

echarts 配置:

import Utils from '@/common/utils'; const lineOptions = { dataZoom: [ { type: 'inside', start: 0, end: 100, moveOnMouseMove: false, }, { type: 'slider', height: 6, bottom: 20, showDetail: false, showDataShadow: false, orient: 'horizontal', borderColor: 'rgba(255, 255, 255, 0)', // 渐变色 start fillerColor: Utils.getEChartsLinearColors({ position: [0, 0, 1, 0], colors: [ '#97CCFE', '#AF6AFF', ], }), // 渐变色 end brushSelect: false, }, ], tooltip: { show: true, confine: true, extraCssText: 'z-index: 10', backgroundColor: 'rgba(40,102,120,0.34)', borderColor: 'rgba(39, 17, 13, 0)', }, series: [ { symbol: 'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAaxJREFUSA21lrFOwzAQhmOE2Io68QJUHWGBla0TUjeegYHnYeAZ2Cp16sZKFxij8gJMFd1Ywv9FNoqbcxJK8ku/bF/u7nfts12XNaAoilN9nooTcSyORLATt+JGzJ1zX2pNOMuqxCS6ES9E06cSV6j/Lr5ICOEItWAlZ8Zz8STybB98y2UhkbzqGgko+bU+zqoOB/RXEnkNcUeh42f+3+Skm/lcZepSQAbWnGXpC3OfMzv2GdnQpjW/0nd45v0/1a49vSlqyEXOpZMSpfggRvuhMeCX3YnnDAx8yPYs1qpHNqrrkSWiaqzkMjcm5zvCTMACOacIcIgssCSpmVf98cHXwgQBTqiFVNBffMcIhOO/Hxg2dN9ujVO+IwQGBQJWBSBKKXZFyneHALeiBeq8K1K+WwS4ci0QRJ23AZ+UwAYBbj8OhQUOUZNIOGhWLDnz8oDpNN9qcGl5eRslC0O1tF0VhL3pVl0GAUr1Xmy6jwjqCt6GJx4gliijo2ZBvyfw8JTVWQqQVAb2YtWDAA/O76tWu+S0H1x+wzyZYfb+sRjm0Q8itP6t4Bcd/LflBy3hc3EFl3JYAAAAAElFTkSuQmCC', showSymbol: false, symbolSize: 10, selectedMode: 'single', emphasis: { lineStyle: { width: 2, }, }, select: { disabled: true, }, data: [123, 2115, 518, 8418, 1894, 960], type: 'line', smooth: true, lineStyle: { width: 2, shadowColor: '#AAA9FC', shadowOffsetY: 0, // 渐变色 start color: Utils.getEChartsLinearColors({ position: [0, 0, 0, 1], colors: [ '#AB7DFD', '#B5DCFD', ], }), // 渐变色 end shadowBlur: 5, }, }, ], };

上边 echarts 配置了 lineStyle.colordataZoom fillerColor 渐变色,最后展示效果如上图所示。


欢迎访问:天问博客