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代码
Mar 16 Javascript
jQuery ajax dataType值为text json探索分享
Sep 23 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
Nov 07 Javascript
JS 数字转换研究总结
Dec 26 Javascript
jquery插件开发之实现jquery手风琴功能分享
Mar 10 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
Oct 11 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
Nov 24 Javascript
JQuery 获取多个select标签option的text内容(实例)
Sep 07 jQuery
Node.js静态服务器的实现方法
Feb 28 Javascript
vue+SSM实现验证码功能
Dec 07 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
May 12 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
Jun 01 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
合格的PHP程序员必备技能
2015/11/13 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
两个Javascript小tip资料
2010/11/23 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
2014/01/26 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
JS作用域深度解析
2016/12/29 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
Node 代理访问的实现
2019/09/19 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
Python中多线程的创建及基本调用方法
2016/07/08 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
基于Pytorch SSD模型分析
2020/02/18 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
python实现人工蜂群算法
2020/09/18 Python
python中Mako库实例用法
2020/12/31 Python
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
三八节标语
2014/06/27 职场文书
员工评语范文
2014/12/31 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
python实现高效的遗传算法
2021/04/07 Python
python中os.path.join()函数实例用法
2021/05/26 Python
如何解决php-fpm启动不了问题
2021/11/17 PHP