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 关于# 和 void的区别分析
Oct 26 Javascript
js实现特定位取反原理及示例
Jun 30 Javascript
javascript的日期对象、数组对象、二维数组使用说明
Dec 22 Javascript
javascript实现在线客服效果
Jul 15 Javascript
javascript 用函数实现继承详解
May 28 Javascript
完美JQuery图片切换效果的简单实现
Jul 21 Javascript
BootStrap实现鼠标悬停下拉列表功能
Feb 17 Javascript
浅谈webpack4.x 入门(一篇足矣)
Sep 05 Javascript
vue 实现Web端的定位功能 获取经纬度
Aug 08 Javascript
JS forEach跳出循环2种实现方法
Jun 24 Javascript
Vue将props值实时传递 并可修改的操作
Aug 09 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 20 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 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
JavaScript中的this机制
2016/01/30 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
2016/10/13 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
python3访问sina首页中文的处理方法
2014/02/24 Python
Python中的exec、eval使用实例
2014/09/23 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
Python3如何判断三角形的类型
2020/04/12 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
Python中Qslider控件实操详解
2021/02/20 Python
python实现学生通讯录管理系统
2021/02/25 Python
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
如何设置Java的运行环境
2013/04/05 面试题
什么是makefile? 如何编写makefile?
2013/01/02 面试题
警察先进个人事迹材料
2014/05/16 职场文书
校园绿化美化方案
2014/06/08 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
保证书格式
2015/01/16 职场文书
2014年度个人总结范文
2015/03/09 职场文书
昆虫记读书笔记
2015/06/26 职场文书
边城读书笔记
2015/06/29 职场文书
考试后的感想
2015/08/07 职场文书
python 实现的截屏工具
2021/05/08 Python
PHP正则表达式之RCEService回溯
2022/04/11 PHP