首页 > 其他分享 >ECharts 仪表盘 实现进度条渐变色,但数据轴渐变颜色范围固定

ECharts 仪表盘 实现进度条渐变色,但数据轴渐变颜色范围固定

时间:2023-01-17 18:25:18浏览次数:65  
标签:false 进度条 color 渐变色 背景色 colorSet roundCap ECharts

需求

实现渐变色的仪表盘,进度条为渐变色,但整个数据轴的颜色范围固定,如下两图:
image
image

难点

该需求难点在于,正常思路配置仪表盘时,为数据设置渐变色,渐变范围是从起点到数据值(如下图);而现在要实现的是,渐变范围总是从0开始到终点,进度条就像一个雨刷,刷过的部分渐变色可见,未刷过的部分不可见。
image
在Echarts官网翻遍了仪表盘的配置项,没有属性可以直接实现,所以思考后绕了个弯,能够实现类似的效果。

思路

需要给仪表盘使用以下从蓝绿到红的渐变色+纯红色的分段颜色:

const color = new echarts.graphic.LinearGradient(0, 0, 1, 0, [
  {
    offset: 0,
    color: '#00FFE0',
  },
  {
    offset: 1,
    color: '#ab4141',
  },
]);
const colorSet = [
  [0.9, color],
  [1, '#FF0000']
];

可以通过倒转数据增长的方向(顺时针->逆时针),并相应倒转其他一些配置项的方式,以数据增长部分作为遮罩,数据轴背景色的剩余部分看起来就像是渐变增长的数据了。
关键代码:

// colorSet倒过来
// const colorSet = [
//   [0.9, color],
//   [1, '#FF0000']
// ];
const colorSet = [
  [0.1, '#FF0000'],
  [1, color]
];
{
  type: 'gauge',
  startAngle: 0,
  endAngle: 180,
  min: 240, // min和max倒过来
  max: 0,
  clockwise: false, // 设置数据逆时针增长
  itemStyle: {
    color: "#eee", // 用于替代背景色的颜色
    borderColor: "#eee", // 用跟上面一样的颜色遮住露出的背景色
  },
  progress: {
    show: true,
    roundCap: false, // 只适用于平角
    width: 100
  },
  axisLine: {
    roundCap: false, // 只适用于平角
    lineStyle: {
      width: 100,
      color: colorSet // 渐变色作为轴的背景色
    }
  }
}

完整代码

以下代码在ECharts官网示例的在线编辑里可以直接运行。

const color = new echarts.graphic.LinearGradient(0, 0, 1, 0, [
  {
    offset: 0,
    color: '#00FFE0',
  },
  {
    offset: 1,
    color: '#ab4141',
  },
]);
// colorSet倒过来
const colorSet = [
  [0.1, '#FF0000'],
  [1, color]
];

option = {
  series: [
    {
      type: 'gauge',
      startAngle: 0,
      endAngle: 180,
      min: 240, // min和max倒过来
      max: 0,
      splitNumber: 8,
      clockwise: false, // 设置数据逆时针增长
      itemStyle: {
        color: "#eee", // 用于替代背景色的颜色
        borderColor: "#eee", // 用跟上面一样的颜色遮住露出的背景色
      },
      progress: {
        show: true,
        roundCap: false, // 只适用于平角
        width: 100
      },
      emphasis: {
        // 禁用高亮(从v5.3.0开始支持)低版本可以通过设置color为'inherit'或与普通状态相同颜色实现
        disabled: true 
      },
      pointer: {
        show: false // 隐藏指针
      },
      axisLine: {
        roundCap: false, // 只适用于平角
        lineStyle: {
          width: 100,
          color: colorSet // 渐变色作为轴的背景色
        }
      },
      axisTick: {
        splitNumber: 2,
        lineStyle: {
          width: 2,
          color: '#999'
        }
      },
      splitLine: {
        length: 8,
        lineStyle: {
          width: 3,
          color: '#999',
          roundCap: false
        }
      },
      axisLabel: {
        distance: 105,
        color: '#999',
        fontSize: 20
      },
      title: {
        show: false
      },
      detail: {
        show: false
      },
      data: [
        {
          value: 140
        }
      ]
    }
  ]
};

不适用场景

  • 不适用于有点击和悬停高亮的场景(因为实际上数据部分在右边)
  • 不适用于圆角(roundCap为true)样式,看起来会像凹进去

标签:false,进度条,color,渐变色,背景色,colorSet,roundCap,ECharts
From: https://www.cnblogs.com/cosmicbison/p/17058468.html

相关文章

  • echarts自定义tooltip提示框内容
    需求:echarts中的tooltip提示框需要拼接单位,效果如下:代码:tooltip:{trigger:'axis',formatter:(params)=>{//unit为单位,此处是需要动态拼接单位......
  • 18.PyQt5【基本组件】进度条对话框-QProgressDialog
    一、前言QProgressDialog进度对话框,向用户提示程序中当前任务的进度信息,用以提示当然任务正在进行,并按百分比显示进度。对话框提供了一个取消按钮,用以向用户提供终止操......
  • Axure 进度条制作
    拖两个矩形,一个用来做边框,另一个用来做进度下图进度条的宽要设为2,如果是1的话,看不到背景色动百分比进度条百分比[[Math.floor(jdt.width/bk.width100)]]进......
  • pyecharts 保存图表至本地
    pipinstallsnapshot-seleniumfrompyecharts.renderimportmake_snapshotfromsnapshot_seleniumimportsnapshot​#proname_list是lable,pie_chart_knums_d......
  • Echarts tooltip被其他图层遮挡解决办法
    tooltip:{trigger:'item',renderMode:'html',appendToBody:true},......
  • echarts来显示世界地图和全国地图,并且可以下钻层级
    echarts来显示世界地图和全国地图,并且可以下钻层级使用echarts来显示世界地图和全国地图,并且可以下钻层级使用的技术现有的功能遇到的问题解决总结参考内容直接来......
  • Echarts中国地图下钻
     //各省份的地图json文件varprovinces={'上海':'/asset/get/s/data-1482909900836-H1BC_1WHg.json','河北':'/asset/get/s/data-1482909799572-Hkgu_yW......
  • Echarts河南地图下钻
     varparentJson=null;varparentInfo=[{cityName:'河南',level:'city',code:410000,},];getGeoJson(410000);vartimeFn=null;//利用高德api......
  • 在vue中使用Echarts绘制叠堆折线面积图(可切换叠堆柱状图)
    (文章目录)效果我这里用的框架是Element+vue,将可视化图表用card卡片包起来,这个叠堆折线面积图主要实现的功能有:1.默认进入时看到的是叠堆折线面积图,在点击对应的元素切......
  • 【Linux操作系统】如何实现Linux中软件安装进度条?
    文章目录​​一.回车与换行​​​​二.缓冲区问题​​​​三.倒计时小程序​​​​四.进度条小程序​​Linux下安装软件时,经常会看到类似上图的进度条,今天带大家用C语言来演......