一、需求背景:

  贴图说明:要求数据在不同类型的区间段内展示。

  

二、实现思路及代码

实现方法:

    利用echarts的自定义配置:option.series[i].type='custom'中的renderItem(params, api)函数进行处理,这里包括了两个参数:params是对应每一个dataItem的数据信息;api是可调用的方法(api.value()和api.coord())。详情可以查看官方文档。

   官方提供的示例:http://www.echartsjs.com/gallery/editor.html?c=custom-profile

代码及说明:

  

let colors = ['#4f81bd', '#c0504d', '#9bbb59', '#604a7b'];
let _that = this; //这里需要注意
this.option = {
color: colors,
tooltip: {
formatter: function (params) {
return params.name + ':' + params.value[1] + '~' + params.value[2];
}
},
grid: {
left: '3%',
right: '3%',
top: '1%',
bottom: '10%',
containLabel: true
},
xAxis: {
data:['2018-06-15','2018-06-25', '2018-07-01','2018-08-25','2018-11-14', '2018-12-13']
},
yAxis: {
data:['甲泼尼龙片', '醋酸泼尼松片', '缬沙坦胶囊']
},
series: [
{
type: 'custom',
renderItem: function (params, api) {
var categoryIndex = api.value(0);
var start = api.coord([api.value(1), categoryIndex]);
var end = api.coord([api.value(2), categoryIndex]);
var height = 24; return {
type: 'rect',
/**_that.$echarts 因为是使用vue 所以特别要注意改成自己vue里面初始化echarts的方法,默认为echarts.graphic.clipRectByRect */
shape: _that.$echarts.graphic.clipRectByRect({
x: start[0],
y: start[1] - height / 2,
width: end[0] - start[0],
height: height
}, {
x: params.coordSys.x,
y: params.coordSys.y,
width: params.coordSys.width,
height: params.coordSys.height
}),
style: api.style()
};
},
encode: {
x: [1, 2],
y: 0
},
data:
[
                  //value[ 维度0 维度1 维度2]
                    //dataItem
      {
      itemStyle: { normal: { color: colors[0] } },//条形颜色
     name: '甲泼尼龙片',  
                   value: [0, '2018-08-25', '2018-12-13']//0,1,2代表y轴的索引,后两位代表x轴数据开始和结束
                 },
                 //dataItem
                 {  
                   itemStyle: { normal: { color: colors[1] } },  
                  name: '醋酸泼尼松片',
                 value: [1, '2018-06-15', '2018-11-14']   
                 },
                  //dataItem
                 {   
                   itemStyle: { normal: { color: colors[2] } },  
                   name: '缬沙坦胶囊',
                   value: [2, '2018-06-25', '2018-07-01']  
                 },   
               ]
           }
       ]
  };

  

  因为这里我是在vue里面使用的,所以需要注意几点:

  1.代码中_that.$echarts.graphic.clipRectByRect,官方给出的是echarts.graphic.clipRectByRect,这里需要调整成this.$echarts.graphic.clipRectByRect,而这里this并不是指向vue对象的,需要转换一下。

  2.series.data中的值,每一个都对应dataItem;data.value中分别对应[纬度0,纬度1,纬度2];encode中的x[1,2]表示纬度1,纬度2映射到X轴上,y:0表示纬度0映射到Y轴上,所以data.value中的数据顺序要和encode中的x,y的配置要配合使用.

  3.本demo中encode.y=0所对应的是data.value中纬度0的数据,data.value中纬度0所对应的Y轴上类别分别是yAxis.data[]里面所对应的类别.

 

echarts renderItem-在区间段内展示连续数据的更多相关文章

  1. 【laravel】同一代码段内,先更新数据,后查询修改的数据,查询结果错误的问题

    如标题所言,是什么意思呢?举个栗子,需求如下: 你是一个电话销售人员,手头有一些待call电话单,每个电话单上有N个不同的电话号码,需要你每打一个电话就标记为”已打“.当一个电话单上的号码都标记为”已 ...

  2. ORACLE体系结构一 (逻辑结构)-表空间、段、区和数据块

    一.Oracle的逻辑结构 Oracle的逻辑结构是一种层次结构.主要由:表空间.段.区和数据块等概念组成.逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构.数据库存储层次结构 ...

  3. ORACLE体系结构逻辑结构-表空间、段、区和数据块

    转自: https://www.cnblogs.com/sunziying/p/8994792.html 一.Oracle的逻辑结构 Oracle的逻辑结构是一种层次结构.主要由:表空间.段.区和数据 ...

  4. javascript 防止多次提交或执行(在规定时间段内只允许执行一次) 默认 3000ms

    "use strict" class Func{ constructor(){} isRun(id, time){//防止多次提交或执行(在规定时间段内只允许执行一次) 默认 30 ...

  5. hdu4106 区间k覆盖问题(连续m个数,最多选k个数) 最小费用最大流 建图巧妙

    /** 题目:hdu4106 区间k覆盖问题(连续m个数,最多选k个数) 最小费用最大流 建图巧妙 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4106 ...

  6. 如何用sql批量删除一个id段内的dedecms文章?

    之前因为ytkah批量添加了dedecms文章,数量有些多,后面出现问题了,想要删除一部分织梦文章,后台一篇篇删,删到手软(相关内容:修改dedecms关键词到手软),于是就想到了sql数据库操作!那 ...

  7. [汇编语言]-第九章 根据位移进行转移的jmp指令 段内短转移 段内近转移 段间转移(远转移) 转移的目的地址在指令中,在寄存器中,在内存中的jmp指令

    1- jmp为无条件转移指令,可以只修改IP, 也可以同时修改CS和IP jmp指令要给出两种信息: (1) 转移的目的地址 (2) 转移的距离(段间转移, 段内转移, 段内近转移) 2- 依据位移进 ...

  8. C++输出IP地址段内的合法地址

    近半年的Intel实习生活快要结束了.马上要找工作了,这段时间打算把以前的知识复习复习,顺便在这里记录一下.这是当时去Intel面试的时候,面试官问的一道题.当时因为时间关系,只让我提供一个思路,并没 ...

  9. Easyui DataGrid DateRange Filter 漂亮实用的日期区间段筛选功能

    自定义扩展Jquery easyui datagrid filter组件实现对日期类型区间段的筛选功能.显示效果如一下 是不是非常实用 引用的jquery 组件是 Date Range Picker ...

随机推荐

  1. 2018-2-13-win10-UWP-动画

    title author date CreateTime categories win10 UWP 动画 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23 ...

  2. struts2注解返回json

    Struts2使用注解方式返回Json数据 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Geek_Alex/article/details/788 ...

  3. Opencv 特征提取与检测-图像特征描述

    图像特征描述 什么是图像特征 可以表达图像中对象的主要信息.并且以此为依据可以从其它未知图像中检测出相似或者相同对象 常见的图像特征 常见的图像特征  边缘  角点  纹理 图像特征描述  描 ...

  4. JavaScript中的函数柯里化与反柯里化

    一.柯里化定义 在计算机科学中,柯里化是把 接受多个参数的函数 变换成 接受一个单一参数(最初函数的第一个参数)的函数 并且返回 接受余下参数且返回结果的新函数的技术 高阶函数 高阶函数是实现柯里化的 ...

  5. weblogic重置控制台密码

    1.备份文件如下文件 %DOMAIN_HOME%/security/DefaultAuthenticatorInit.ldift 2.进入%DOMAIN_HOME%/security目录,执行下列命令 ...

  6. Git及github使用(二)上传项目

    接上篇中创建好的项目. 1.进入到相应的目录右键Git bash here打开客户端 2.创建一个readme文本 $ echo "# Python日常记录积累" >> ...

  7. sklearn 调用逻辑回归函数训练数据时出现 “unknown label type:unknown”

    problemsolution:

  8. 20140402 cmake编译错误原因 同时装了vs2010和vs2012

    1.cmake编译错误原因 在用cmake编译opencv出现的错误 The CXX compiler identification is MSVC 16.0.30319.1 The C compil ...

  9. jquery操作html元素之( 获得内容和属性)

    * jQuery - 获得内容和属性 jQuery DOM 操作 jQuery 中非常重要的部分,就是操作 DOM 的能力. jQuery 提供一系列与 DOM 相关的方法,这使访问和操作元素和属性变 ...

  10. mybatis 处理CLOB/BLOB类型数据

    BLOB和CLOB都是大字段类型. BLOB是按二进制来存储的,而CLOB是可以直接存储文字的. 通常像图片.文件.音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去.文章或者是较长的文字 ...