echarts统计x轴区间的数值实例代码详解


Posted in Javascript onJuly 07, 2019

有时我们需要统计自定义echarts图,统计x轴区间的y轴数量。

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

以下是改自官方实例: https://www.echartsjs.com/examples/editor.html?c=bar-histogram ,把以下引用 ecStat.js来处理数据的部分修改成自己拼装成需要的格式

var bins = ecStat.histogram(girth);
var min = Infinity;
var max = -Infinity;
edata = echarts.util.map(bins.data, function (item, index) {
 var x0 = bins.bins[index].x0;
 var x1 = bins.bins[index].x1;
 interval = x1 - x0;
 min = Math.min(min, x0);

max = Math.max(max, x1);

return [x0, x1, item[1]];
});

原因是引用ecStat.js处理数据时,有时出现以下错误,暂时没找到解决方法。

echarts统计x轴区间的数值实例代码详解

改写后的代码显示效果如下:

echarts统计x轴区间的数值实例代码详解

<div id="main1" style="width: 1000px;height: 500px"></div>
<script type="text/javascript">
 $(function(){
  generateChart();
 });
 function generateChart(){
  var myChart1 = echarts.init(document.getElementById('main1'));
  var girth = [19, 26.4, 34, 41.4, 42.4, 42.7, 42.9, 43.1, 43.2, 43.3, 43.3, 43.3, 44.9, 45.4, 46.2, 46.7, 48, 48, 49.1, 54.2];
  //自定义拼装数据方式

 var edata = new Array();
  var scopeMin = 0;
  var scopeMax = 100;
  var interval = (scopeMax-scopeMin)/10;
  var tmin = scopeMin;
  while(tmin < scopeMax){
   var x0 = tmin; 
   var x1 = tmin+interval;
   var samplenum = 0;
   for(var i=0;i<girth.length;i++){
    if((scopeMin == x0 && girth[i] < x0) || (x0 <= girth[i] && x1 > girth[i])
     ||(scopeMin == x1 && girth[i] > x1)) {
     samplenum++;    
    }
   }
   tmin += interval;
   edata.push([x0, x1, samplenum]);
  }
  var option = {
   color: ['rgb(25, 183, 207)'],
   grid: {
    top: 80,
    containLabel: true
   },
   xAxis: [{
    type: 'value',
    min: scopeMin,
    max: scopeMax,
    interval: interval
   }],
   yAxis: [{
    type: 'value',
   }],
   series: [{
    name: 'height',
    type: 'custom',
    renderItem: renderItem,
    label: {
     normal: {
      show: true,
      position: 'top'
     }
    },
    encode: {
     x: [0, 1],
     y: 2,
     tooltip: 2,
     label: 2
    },
    // data: data
    data: edata
   }]
  };
  myChart1.setOption(option);
  window.onresize = function () {
   myChart1.resize();
  }
 }
 function renderItem(params, api) {
  var yValue = api.value(2);
  var start = api.coord([api.value(0), yValue]);
  var size = api.size([api.value(1) - api.value(0), yValue]);
  var style = api.style();
  return {
   type: 'rect',
   shape: {
    x: start[0] + 1,
    y: start[1],
    width: size[0] - 2,
    height: size[1]
   },
   style: style
  };
 }
</script>

总结

以上所述是小编给大家介绍的echarts统计x轴区间的数值实例代码详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
用js 让图片在 div或dl里 居中,底部对齐
Jan 21 Javascript
js中巧用cssText属性批量操作样式
Mar 13 Javascript
基于JavaScript 下namespace 功能的简单分析
Jul 05 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
Sep 05 Javascript
jquery实现可旋转可拖拽的文字效果代码
Jan 27 Javascript
AngularJS中watch监听用法分析
Nov 04 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
May 18 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
Aug 14 Javascript
vue axios请求拦截实例代码
Mar 29 Javascript
解决Layui中layer报错的问题
Sep 03 Javascript
p5.js码绘“跳动的小正方形”的实现代码
Oct 22 Javascript
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
vue + typescript + video.js实现 流媒体播放 视频监控功能
Jul 07 #Javascript
详解django模板与vue.js冲突问题
Jul 07 #Javascript
django中使用vue.js的要点总结
Jul 07 #Javascript
Vue使用lodop实现打印小结
Jul 06 #Javascript
cordova+vue+webapp使用html5获取地理位置的方法
Jul 06 #Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
Jul 06 #Javascript
vue router总结 $router和$route及router与 router与route区别
Jul 05 #Javascript
You might like
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
JavaScript 继承详解(四)
2009/07/13 Javascript
Javascript this指针
2009/07/30 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
jQuery基础框架浅入剖析
2012/12/27 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
Element input树型下拉框的实现代码
2018/12/21 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
Python实现的简单算术游戏实例
2015/05/26 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
Python I/O与进程的详细讲解
2019/03/08 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
Python运行DLL文件的方法
2020/01/17 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
HTML5验证以及日期显示的实现详解
2013/07/05 HTML / CSS
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
函授本科毕业自我鉴定
2013/10/09 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
浅谈mysql执行过程以及顺序
2021/05/12 MySQL