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事件模型代码
Jul 01 Javascript
Visual Studio中的jQuery智能提示设置方法
Mar 27 Javascript
JS request函数 用来获取url参数
May 17 Javascript
JavaScript实现x秒后自动跳转到一个页面
Jan 03 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
May 29 Javascript
JS获取网页图片name属性的方法
Apr 01 Javascript
javascript中数组方法汇总
Jul 07 Javascript
什么是JavaScript注入攻击?
Sep 14 Javascript
vue2.0之多页面的开发的示例
Jan 30 Javascript
详解在React中跨组件分发状态的三种方法
Aug 09 Javascript
服务端预渲染之Nuxt(使用篇)
Apr 08 Javascript
vue+iview实现分页及查询功能
Nov 17 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中foreach()用法汇总
2015/07/02 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
对联广告js flash激活
2006/10/19 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
socket.io学习教程之基础介绍(一)
2017/04/29 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
python赋值操作方法分享
2013/03/23 Python
python读取Android permission文件
2013/11/01 Python
Python中的类与对象之描述符详解
2015/03/27 Python
python中如何使用正则表达式的非贪婪模式示例
2017/10/09 Python
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
在Python中过滤Windows文件名中的非法字符方法
2019/06/10 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
python使用列表的最佳方案
2020/08/12 Python
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
导游欢送词
2015/01/31 职场文书
收费员岗位职责
2015/02/14 职场文书
2015年重阳节主持词
2015/07/04 职场文书
SONY AN-LP1 短波有源天线放大器图
2022/04/05 无线电
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL
Oracle 多表查询基本语法实例
2022/04/18 Oracle