
image.png
使用版本:echarts 5.X
实现步骤:
使用Svg方式渲染图表=>在当前html页新建svg渐变标签=>将新建的渐变标签Id填入图表
echarts下载地址:https://echarts.apache.org/zh/download.html (html文件内需要下载支持svg格式的包)
1.使用Svg方式渲染图表。echarts 5版本,提供了Svg的渲染方式。
...
var myChart = echarts.init(chartDom, 'dark', { renderer: 'svg' });
2.在当前html页新建svg渐变标签。
...
<svg>
<linearGradient id="textGradient" x1="0" y1="0" x2="0" y2="1">
<stop offset="20%" stop-color="#ffffff"></stop>
<stop offset="100%" stop-color="#0082ff"></stop>
</linearGradient>
</svg>
...
3.将新建的渐变标签Id填入图表,series 数据中,label提供了文字的color,在svg的渲染规则中不会对color 中的值进行校验,即只要数据格式正确,填任何数值都可以被渲染。
series[0].label.color = 'url(#textGradient)'
完整代码
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>echarts</title>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/javascript" src="./echarts.min.js"></script>
<style>
</style>
</head>
<body>
<div style="width: 500px; height: 300px" id="main"></div>
<svg>
<linearGradient id="textGradient" x1="0" y1="0" x2="0" y2="1">
<stop offset="20%" stop-color="#ffffff"></stop>
<stop offset="100%" stop-color="#0082ff"></stop>
</linearGradient>
</svg>
<script type="text/javascript" src="./echarts2.js"></script>
</body>
</html>
echarts2.js
var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom, 'dark', { renderer: 'svg' });
var option;
var color = [
{ start: '#00fafd', end: '#0082ff' },
{ start: '#effe00', end: '#eaa700' }
];
option = {
yAxis: [
{
type: 'category',
data: ['硬盘录像机', '摄像机', '矩阵'],
axisLine: { show: false },
axisTick: { show: false },
axisLabel: {
color: '#fff',
fontSize: 18,
inside: true,
verticalAlign: 'top',
padding: [-40, 0, 0, 0]
}
}
],
xAxis: {
type: 'value',
show: false
},
series: [
{
data: [120, 200, 150],
type: 'bar',
barWidth: '20%',
backgroundColor: '#484647',
itemStyle: {
borderRadius: 100,
color:new echarts.graphic.LinearGradient(
1,
0,
0,
1,
[
{
offset: 0,
color: color[0].start
},
{
offset: 1,
color: color[0].end
}
],
false
)},
showBackground: true, //是否显示背景
backgroundStyle: {
//背景色配置
color: '#484647',
borderRadius: 100
},
labelLayout: {
x: '80%'
},
label: {
show: true,
position: 'end',
offset: [0, -30],
formatter(a, b) {
return `{span|${a.data || 0}}{legend|台}`;
},
color:'url(#textGradient)',//渐变色
rich: {
span: {
fontSize: 28,
fontWeight: 'bold'
},
legend: {
fontSize: 16
}
}
}
}
]
};
myChart.setOption(option);