echarts renderItem-在区间段内展示连续数据
2024-08-24 04:28:42
一、需求背景:
贴图说明:要求数据在不同类型的区间段内展示。
二、实现思路及代码
实现方法:
利用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[]里面所对应的类别.
最新文章
- .NET LINQ查询语法与方法语法
- c#winform窗体嵌入
- Linux的chattr与lsattr命令
- Python 进阶 - 正则表达式
- 拾遗:『ext4 Quota』
- ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated.
- 读书笔记-UIView与控件
- Spark菜鸟学习营Day1 从Java到RDD编程
- xcode archive导出ipa时重签名
- centos 安装qrcode  二维码
- [转]NHibernate之旅(11):探索多对多关系及其关联查询
- C++ 1
- 【记录】ACM计划
- 使用nodejs爬前程无忧前端技能排行(半半成品)
- JVM初探- 使用堆外内存减少Full GC
- qt手写输入法资料
- kettle spoon中“表输入”到“表输出”的乱码问题
- 横向滑动页面,导航条滑动居中的 js 实现思路
- TortoiseGit版本库中某个文件显示问号或叹号的问题解决办法
- UOJ #30. [CF Round #278] Tourists
热门文章
- 文件上传到ftp服务工具类
- 笔记46 Hibernate快速入门(三)
- [翻译]windows下 连接到 bitnami的phpmyadmin
- js的三种消息框alert,confirm,prompt
- NOIp2018集训test-9-22(am/pm) (联考三day1/day2)
- gnome/KDE安装,gnome出现问题,重新安装nvdia驱动, Linux(CentOS7) NVIDIA GeForece GTX 745 显卡驱动
- ionic-CSS:ionic 网格(Grid)
- HDFS API 操作实例(二) 目录操作
- HTML和CSS标签命名规则
- Spring Boot 启动,1 秒搞定!