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脚本学习 比较实用的基础
Sep 07 Javascript
多广告投放代码 推荐
Nov 13 Javascript
用Javascript数组处理多个字符串的连接问题
Aug 20 Javascript
JS面向对象编程浅析
Aug 28 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
Sep 29 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
Jan 07 Javascript
jquery悬浮提示框完整实例
Jan 13 Javascript
微信小程序-获得用户输入内容
Feb 13 Javascript
Angular中的$watch方法详解
Sep 18 Javascript
JQuery animate动画应用示例
May 14 jQuery
Vue实现小购物车功能
Dec 21 Vue.js
JavaScript前端面试组合函数
Jun 21 Javascript
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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
paypal即时到账php实现代码
2010/11/28 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
使用php-timeit估计php函数的执行时间
2015/09/06 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
vue3.0 上手体验
2020/09/21 Javascript
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
Python打印“菱形”星号代码方法
2018/02/05 Python
python机器学习库xgboost的使用
2020/01/20 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
CSS伪类与CSS伪元素的区别及由来具体说明
2012/12/07 HTML / CSS
英国团购网站:Groupon英国
2017/11/28 全球购物
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
2014年小学重阳节活动策划方案
2014/09/16 职场文书
甜品店创业计划书
2014/09/21 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
赞助商致辞
2015/07/30 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
Python利用FlashText算法实现替换字符串
2022/03/31 Python