echarts实现文字渐变

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);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容