echarts之markArea分区域显示不同颜色

一、需求

如下图,项目中需要这样的效果,在不同的时间区域显示不同颜色。

二、步骤拆分

1、先画折线图

如果暂时忽略高亮不看的话,这个echart很容易实现,X轴xAxis,y轴yAxis,series三部曲:

js 复制代码
var option = {
    xAxis: {
        type: 'category',
        data: xAxisData
        //网格样式
        splitLine: {
            show: true,
            lineStyle:{
                color: ['rgb(229, 233, 242)'],
                width: 1,
                type: 'solid'
            }
        },
        axisLabel:{
            rotate:20,
            interval:0
        }
    },
    yAxis: { 
        type: 'value',
         //网格样式
         splitLine: {
            show: true,
            lineStyle:{
                color: ['rgb(229, 233, 242)'],
                width: 1,
                type: 'solid'
            }
        }
    },
    series: [{
        name: '发布时间',
        data: data,
        type: 'line',

    }]
}

2、再加高亮

①markArea介绍

通过查阅官方文档有一个属性markArea图表标域,常用于标记图表中某个范围的数据,例如标出某段时间投放了广告。

②markArea常用属性方法
  • markArea.slient //boolean 图形是否不响应和触发鼠标事件,默认为 false,即响应和触发鼠标事件。
  • markArea.label //Object 标域文本配置。
  • markArea.itemStyle //Object 该标域的样式。
  • markArea.emphasis //Object 高亮的标域样式。
  • markArea.blur //Object 淡出的标域样式。淡出的规则跟随所在系列。
  • markArea.data //any

标域的数据数组。每个数组项是一个两个项的数组,分别表示标域左上角和右下角的位置,每个项支持通过下面几种方式指定自己的位置

  1. 通过 x, y 属性指定相对容器的屏幕坐标,单位像素,支持百分比。
  2. 用 coord 属性指定数据在相应坐标系上的坐标位置,单个维度支持设置 'min', 'max', 'average'。
  3. 直接用 type 属性标注系列中的最大值,最小值。这时候可以使用 valueIndex 或者 valueDim 指定是在哪个维度上的最大值、最小值、平均值。
  4. 如果是笛卡尔坐标系的话,也可以通过只指定 xAxis 或者 yAxis 来实现 X 轴或者 Y 轴为某值的标域,见示例 scatter-weight 当多个属性同时存在时,优先级按上述的顺序。
③markArea使用范围

markArea通常配合其他的图表类型或者组合图表使用,在不同的图表类型中,markArea的效果也是不一样的,可以用于突出主要数据、标识异常数据或者比较不同数据之间的差异。

比如在折线图中使用markArea,可以用来标记某个时间段内的数据变化,让用户更直观地看到数据的趋势。

3、示例

下面我们可以看到markArea的使用方法和一些参数说明。

js 复制代码
series: [{
    name: '发布时间',
    data: data,
    type: 'line',
    markArea: {
        itemStyle: {
          color: 'rgba(255, 173, 177, 0.4)'
        },
       data: [
              [
                {
                  name: '间歇',
                  xAxis: '12:00-14:00',
                  itemStyle: {
                    color: 'rgba(255, 173, 177, 0.4)'
                  },
                },
                {
                  xAxis: '14:00-16:00'
                }
              ],
              [
                {
                  name: '睡前',
                  xAxis: '18:00-20:00',
                  itemStyle: {
                    color: 'rgba(255, 173, 177, 1)'
                  },
                },
                {
                  xAxis: '22:00-24:00'
                }
              ]
            ]
      }
}]

以上参考了官方文档:echarts.apache.org/zh/option.h...

前端菜鸟,谨把自己遇到的问题整理出来方便以后查阅,望路过的大佬指点一二~

后续遇到问题再继续补充。

相关推荐
anew___27 分钟前
《从零手写操作系统 (20):ELF加载器——让OS读懂现代编译器》
java·服务器·前端
ss27328 分钟前
AI全栈实战 | 2.3-01 组件库实战:Element Plus 怎么搭出专业界面,过度封装为什么成维护负担
前端·javascript·elementui·vue
对空六课34 分钟前
动态按钮ID变化时的稳定埋点标识设计
前端·数据分析
福兮说38 分钟前
URL 编码的七个坑:c++ 传到后端变空格、%25 套娃、截断 emoji 直接报错
开发语言·前端·javascript·node.js·url
吴声子夜歌43 分钟前
Nginx应用与运维——Nginx Web服务应用实战(Python网站的搭建)
运维·前端·nginx
小的时候可菜了1 小时前
JS 异步的本质:从单线程到 thenable(一条进化链)
开发语言·前端·javascript
liangshanbo12151 小时前
Webpack vs Vite 底层原理高频追问的问题
前端·webpack·node.js
web打印社区2 小时前
Windows 网页静默打印设置步骤:客户端、防火墙与联调清单
开发语言·前端·javascript·chrome·pdf·ecmascript
恋猫de小郭2 小时前
KMP 又改了编译流程, Separate Compilation 禁止了 `commonMain` 的依赖穿透
android·前端·flutter
吴声子夜歌2 小时前
Nginx应用与运维——Nginx Web服务应用实战(静态文件服务器的搭建)
运维·前端·nginx