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 相关文章推荐
JavaScript 使用技巧精萃(.net html
Apr 25 Javascript
js 操作css实现代码
Jun 11 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
Nov 25 Javascript
向左滚动文字 js代码效果
Aug 17 Javascript
处理及遍历XML文档DOM元素属性及方法整理
Aug 23 Javascript
JS实现的页面自定义滚动条效果
Oct 26 Javascript
AngularJS教程 ng-style 指令简单示例
Aug 03 Javascript
JS实现“隐藏与显示”功能(多种方法)
Nov 24 Javascript
关于 jQuery Easyui异步加载tree的问题解析
Dec 06 Javascript
vue+vue-router转场动画的实例代码
Sep 01 Javascript
js中的深浅拷贝问题简析
May 10 Javascript
详解js根据百度地图提供经纬度计算两点距离
May 13 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中在PDO中使用事务(Transaction)
2011/05/14 PHP
ThinkPHP惯例配置文件详解
2014/07/14 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
页面中iframe相互传值传参
2009/12/13 Javascript
JavaScript中的类继承
2010/11/25 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
Python的迭代器和生成器使用实例
2015/01/14 Python
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
Python中http请求方法库汇总
2016/01/06 Python
一步步教你用Python实现2048小游戏
2017/01/19 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
wxPython色环电阻计算器
2019/11/18 Python
如何用OpenCV -python3实现视频物体追踪
2019/12/04 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
pycharm导入源码的具体步骤
2020/08/04 Python
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
公务员培训心得体会
2013/12/28 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
详解java如何集成swagger组件
2021/06/21 Java/Android