Echarts 折线图超出上下限部分变色 结合visualMap处理

34 篇文章 2 订阅
1 篇文章 0 订阅

前言:介绍单个折线图的处理方法和多个折线图不同颜色的处理方法

visualMap官方文档: Documentation - Apache ECharts

单个折线图效果

多折线图效果

注意点:在series 里面不能设置线的颜色,要不然会以series里面设置的颜色为准,设置的范围变色将不起作用

一:单折线图代码逻辑

var upLimit = 500; // 上限

option = {
  tooltip: {
    trigger: 'axis',
  },
  xAxis: {
    type: 'category',
  },
  yAxis: {
    type: 'value'
  },
  visualMap: {
      type: 'piecewise',
      show: false,
      dimension: 1,
      // seriesIndex: [0, 1], // 虽然可以指定多个series,但是线的颜色只能设置一条
      seriesIndex: [0, 1],
      pieces: [{
          gt: upLimit,
          color: 'red'
        }, {
          lt: 0,
          color: 'blue'
        }],
      outOfRange: { // 在选中范围外 的视觉元素,这里设置在正常范围内的图形颜色
        color: 'blue',
      },
    },
  series: [
    {
      name:'线1',
      type: 'line',
      smooth: false,
      symbol: 'none',
      lineStyle: {
        // 这里不能设置颜色,不然会以这个为准,设置的范围变色将不起作用
        width: 2
      },
       markLine: {
        symbol: 'none',
        label: {
          show: false
        },
         lineStyle:{
          color:'red'
        },
        data: [
          {
            yAxis: upLimit
          }
        ]
      },
      data: [
        ['2019-10-10', 200],
        ['2019-10-11', 560],
        ['2019-10-12', 750],
        ['2019-10-13', 580],
        ['2019-10-14', 250],
        ['2019-10-15', 300],
        ['2019-10-16', 450],
        ['2019-10-17', 300],
        ['2019-10-18', 100]
      ]
    },
  ]
};

二:多折线图代码逻辑

var upLimit = 600; // 上限
var lowlimit = 0; // 下限


// 定义线的颜色
let lineColor =  ['yellow','blue']
// 生成 visualMap
let visualMap = []
lineColor.map((item,index)=>{
  visualMap.push({
      type: 'piecewise',
      show: false,
      dimension: 1,
      // seriesIndex: [0, 1], // 虽然可以指定多个series,但是线的颜色只能设置一条
      seriesIndex: index,
      pieces: [{
        gt: upLimit,
        color: 'red' //超过部分的颜色
      }, {
        lt: 0,
        color: lineColor[index]
      }],
      outOfRange: { // 在选中范围外 的视觉元素,这里设置在正常范围内的图形颜色
        color: lineColor[index],
      },
    })
})

option = {
  tooltip: {
    trigger: 'axis',
    boundaryGap: false
  },
  xAxis: {
    type: 'category',
    boundaryGap: false
  },
  yAxis: {
    type: 'value'
    // boundaryGap: [0, '30%']
  },
  visualMap: visualMap,
  color:lineColor,
  series: [
    {
      name:'线1',
      type: 'line',
      smooth: false,
      symbol: 'none',
      lineStyle: {
        // 这里不能设置颜色,不然会以这个为准,设置的范围变色将不起作用
        width: 2
      },
      markLine: {
        symbol: 'none',
        label: {
          show: false
        },
         lineStyle:{
          color:'red'
        },
        data: [
          {
            yAxis: upLimit
          }
        ]
      },
      // areaStyle: {},
      data: [
        ['2019-10-10', 200],
        ['2019-10-11', 560],
        ['2019-10-12', 750],
        ['2019-10-13', 580],
        ['2019-10-14', 250],
        ['2019-10-15', 300],
        ['2019-10-16', 450],
        ['2019-10-17', 300],
        ['2019-10-18', 100]
      ]
    },
    {
      name:'线2',
      type: 'line',
      smooth: false,
      symbol: 'none',
      lineStyle: {
        // 这里不能设置颜色,不然会以这个为准,设置的范围变色将不起作用
        width: 2
      },
      markLine: {
        symbol: 'none',
        label: {
          show: false
        },
        lineStyle:{
          color:'red'
        },
        data: [
          {
            yAxis: upLimit
          }
        ]
      },
      // areaStyle: {},
      data: [
        ['2019-10-10', 100],
        ['2019-10-11', 360],
        ['2019-10-12', 950],
        ['2019-10-13', 280],
        ['2019-10-14', 150],
        ['2019-10-15', 300],
        ['2019-10-16', 550],
        ['2019-10-17', 100],
        ['2019-10-18', 900]
      ]
    }
  ]
};

如果遇到echarts中的visualMap不生效的情况

第一:查看series中是否设置了线条的颜色,比如lineStyle的color,设置了之后就会以这个为准,visualMap里面的颜色就不会生效了

第二:如果上面方法还不行,试试按需引入visualMap的js文件

import 'echarts/lib/component/visualMap'

「进军全栈攻城狮」 ,对前端技术保持学习爱好者。我会经常分享自己所学所看的干货,在进阶的路上,共勉!

可以使用ECharts中的visualMap组件来实现这个效果。visualMap可以根据数据范围来设置不同的颜色,从而实现折线超出其他部分的颜色变化。 具体操作步骤如下: 1. 在option中添加visualMap组件,设置min和max属性来指定数据范围。 2. 在series中设置lineStyle属性,使用color属性来设置折线的颜色。 3. 在series中添加markLine组件,使用silent属性来设置是否显示标记线,使用data属性来设置标记线的值。 4. 在markLine中设置lineStyle属性,使用color属性来设置标记线的颜色。 以下是一个示例代码,可以根据实际情况进行修改: ```javascript option = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, visualMap: { show: false, min: 0, max: 10, dimension: 0, inRange: { color: ['#e6f2ff', '#004d99'] } }, series: [{ type: 'line', data: [2, 5, 8, 4, 6, 9, 7], lineStyle: { color: '#004d99' }, markLine: { silent: true, data: [{ yAxis: 6 }], lineStyle: { color: 'red' } } }] }; ``` 在上面的代码中,visualMap组件中的inRange属性设置了数据范围为0到10,并且使用了渐变色来表示数据范围的不同。series中的lineStyle属性设置了折线的颜色为蓝色,markLine组件设置了标记线的值为6,并且标记线的颜色为红色。 这样,当折线超出其他部分时,超出部分的颜色就会变成红色,从而实现了折线超出其他部分的颜色变化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值