一、需求背景:

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

  

二、实现思路及代码

实现方法:

    利用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[]里面所对应的类别.

 

最新文章

  1. .NET LINQ查询语法与方法语法
  2. c#winform窗体嵌入
  3. Linux的chattr与lsattr命令
  4. Python 进阶 - 正则表达式
  5. 拾遗:『ext4 Quota』
  6. ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated.
  7. 读书笔记-UIView与控件
  8. Spark菜鸟学习营Day1 从Java到RDD编程
  9. xcode archive导出ipa时重签名
  10. centos 安装qrcode  二维码
  11. [转]NHibernate之旅(11):探索多对多关系及其关联查询
  12. C++ 1
  13. 【记录】ACM计划
  14. 使用nodejs爬前程无忧前端技能排行(半半成品)
  15. JVM初探- 使用堆外内存减少Full GC
  16. qt手写输入法资料
  17. kettle spoon中“表输入”到“表输出”的乱码问题
  18. 横向滑动页面,导航条滑动居中的 js 实现思路
  19. TortoiseGit版本库中某个文件显示问号或叹号的问题解决办法
  20. UOJ #30. [CF Round #278] Tourists

热门文章

  1. 文件上传到ftp服务工具类
  2. 笔记46 Hibernate快速入门(三)
  3. [翻译]windows下 连接到 bitnami的phpmyadmin
  4. js的三种消息框alert,confirm,prompt
  5. NOIp2018集训test-9-22(am/pm) (联考三day1/day2)
  6. gnome/KDE安装,gnome出现问题,重新安装nvdia驱动, Linux(CentOS7) NVIDIA GeForece GTX 745 显卡驱动
  7. ionic-CSS:ionic 网格(Grid)
  8. HDFS API 操作实例(二) 目录操作
  9. HTML和CSS标签命名规则
  10. Spring Boot 启动,1 秒搞定!