想按时间对一批数据进行统计,但是时间可能不连续,找到一个highcharts 的例子,但是商业收费,不收费的会有一个highcharts标识,不是很想用这个,由于开始选则的是ECharts,所以最好还是有了ECharts,

ECharts官方实例不够全比较多的功能没有例子,所以用ECharts实现做个记录省的忘了,我是看了 https://www.2cto.com/kf/201612/577871.html 的例子 ,然后根据官网的文档写的实例

html代码 统计按年月日周切换

   <div class="middle-left content-box"><!-- 切换统计方式--><ul class="date-type-list clearfix"><li class="date-type-item pull-left active"><button type="button" class="daily" value="1">天</button></li><li class="date-type-item pull-left"><button type="button" class="week" value="2">周</button></li><li class="date-type-item pull-left"><button type="button" class="month" value="3">月</button></li><li class="date-type-item pull-left"><button type="button" class="year" value="4">年</button></li></ul><div class="trends-charts" id="trends-charts" style="width: 100%; height: 380px"></div></div>

<!--引入关键js--><script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/echarts/4.1.0/echarts.min.js"></script>

//对应js代码
var trendsChart = echarts.init(document.getElementById('trends-charts')) // 督察趋势
$(function () {
   //加载图表默认 按日统计   getTrendChart(1)
// 选择时间 $('.content-middle .date-type-item button').click(function () {    var val = $(this).val()    $(this).parent('.date-type-item').addClass('active')    $(this).parent('.date-type-item').siblings().removeClass('active')    getTrendChart(val)})
})
/** * 趋势视图 trendsView 折线图 * * @param dateTYpe 统计方式 4 年 3 月  2 周  1 日 */
function getTrendChart(dateTYpe) {var url = ''var params = {};//两个值都没取到params.dateType = dateTYpe$.ajax({type: "POST",url: baseURL + url,contentType: "application/json",data: JSON.stringify(params),success: function (res) {// 日返回数据格式 例子 [{list=[{countNum=2, dayDate=3, monthDate=7, createTime=2018-07-03 15:20:15.0, weekDate=26, yearDate=2018}, {countNum=5, dayDate=11, monthDate=7, createTime=2018-07-11 15:20:15.0, weekDate=27, yearDate=2018}, {countNum=2, dayDate=15, monthDate=7, createTime=2018-07-15 15:20:15.0, weekDate=28, yearDate=2018}, {countNum=425, dayDate=24, monthDate=7, createTime=2018-07-24 22:14:58.0, weekDate=29, yearDate=2018}, {countNum=417, dayDate=25, monthDate=7, createTime=2018-07-25 22:52:05.0, weekDate=29, yearDate=2018}, {countNum=2, dayDate=26, monthDate=7, createTime=2018-07-26 16:29:25.0, weekDate=29, yearDate=2018}], key=2018}, {list=[{countNum=1, dayDate=1, monthDate=1, createTime=2017-01-01 14:52:55.0, weekDate=1, yearDate=2017}, {countNum=1, dayDate=24, monthDate=1, createTime=2017-01-24 15:20:15.0, weekDate=4, yearDate=2017}], key=2017}]
// 周返回数据格式 例子 [{list=[{countNum=2, monthDate=7, createTime=2018-07-03 15:20:15.0, weekDate=26, yearDate=2018}, {countNum=5, monthDate=7, createTime=2018-07-11 15:20:15.0, weekDate=27, yearDate=2018}, {countNum=2, monthDate=7, createTime=2018-07-15 15:20:15.0, weekDate=28, yearDate=2018}, {countNum=844, monthDate=7, createTime=2018-07-26 16:29:25.0, weekDate=29, yearDate=2018}], key=2018}, {list=[{countNum=1, monthDate=1, createTime=2017-01-01 14:52:55.0, weekDate=1, yearDate=2017}, {countNum=1, monthDate=1, createTime=2017-01-24 15:20:15.0, weekDate=4, yearDate=2017}], key=2017}] 
// 月返回数据格式 例子 [{list=[{countNum=853, monthDate=7, createTime=2018-07-26 16:29:25.0, yearDate=2018}], key=2018}, {list=[{countNum=2, monthDate=1, createTime=2017-01-24 15:20:15.0, yearDate=2017}], key=2017}]
// 年返回数据格式 例子 [{list=[{countNum=853, createTime=2018-07-26 16:29:25.0, yearDate=2018}], key=2018}, {list=[{countNum=2, createTime=2017-01-24 15:20:15.0, yearDate=2017}], key=2017}]
//大致都一样,就少一两个字段 // res = JSON.parse(res)//对展示 series 数据进行拼接 var seriesData = []if (dateTYpe == 4) {var data = [];for (var i = 0; i < res.length; i++) {for (var j = 0; j < res[i].list.length; j++) {var year=res[i].list[j].yearDate+"/1/1";var value = {name: res[i].key,value: [year, res[i].list[j].countNum]}data.push(value)}}var series = {type: 'line',
                    data: data}seriesData=[]seriesData.push(series)} else {for (var i = 0; i < res.length; i++) {var data = [];for (var j = 0; j < res[i].list.length; j++) {var date = new Date(res[i].list[j].createTime);if (dateTYpe == 3) {date = 2017 + "/" + (date.getMonth() + 1) + "/" + date.getDate();}if (dateTYpe == 2) {date = 2017 + "/" + (date.getMonth() + 1) + "/" + date.getDate();}if (dateTYpe == 1) {date = 2017 + "/" + (date.getMonth() + 1) + "/" + date.getDate();}var value = {name: res[i].key,value: [date, res[i].list[j].countNum]}data.push(value)}var series = {name: res[i].key,type: 'line',
                        data: data}seriesData.push(series)
                }}var legend = {}if (dateTYpe == 4) {legend.show = false} else {legend.show = true}trendsChart.setOption({legend: legend,tooltip: {trigger: 'axis',formatter: function (params) { //根据方式不同,展示不同params = params[0];var date = new Date(params.value[0]);if (dateTYpe == 4) {return params.value[1] + "例问题<br/>" + "&nbsp;" + date.getFullYear() + "年";}if (dateTYpe == 3) {return params.value[1] + "例问题<br/>" + (date.getMonth() + 1) + '月,' + params.name;}if (dateTYpe == 2) {var firstDay = new Date(date.getFullYear(), 0, 1);var d = Math.ceil((date.valueOf() - firstDay.valueOf()) / 86400000);var result = Math.ceil(d / 7);return params.value[1] + "例问题<br/>第" + (result + 1) + '周,' + params.name;}/*   if(dateTYpe=='1'){return "&nbsp;&nbsp;&nbsp;"+params.value[1]+"例问题<br/>" + (date.getMonth() + 1) + '月' + date.getDate() + '日,'+params.name  ;}*/return "&nbsp;&nbsp;&nbsp;" + params.value[1] + "例问题<br/>" + (date.getMonth() + 1) + '月' + date.getDate() + '日,' + params.name;},axisPointer: {animation: false}},xAxis: {type: 'time',splitLine: {show: false},axisLabel: {show: true,// 使用函数模板,函数参数分别为刻度数值(类目),刻度的索引formatter: function (value, index) {// 格式化成月/日,只在第一个刻度显示年份var date = new Date(value);var texts = (date.getMonth() + 1) + "月" + date.getDate() + "日";if (dateTYpe == 4) {texts = date.getFullYear()+"年";}if (dateTYpe == 3) {texts = (date.getMonth() + 1) + "月";}if (dateTYpe == 2) {var firstDay = new Date(date.getFullYear(), 0, 1);var d = Math.ceil((date.valueOf() - firstDay.valueOf()) / 86400000);var result = Math.ceil(d / 7);texts = "第" + (result + 1) + "周";}return texts;}}},yAxis: {type: 'value',boundaryGap: [0, '100%'],splitLine: {show: false}},series: seriesData},true);}})
}

转载于:https://www.cnblogs.com/zhouyb/p/9372815.html

ECharts x时间轴不连续实现相关推荐

  1. Echarts 横坐标时间轴,相同的年份只显示第一个,方案记录

    希望达到的效果 要点 展示第一个坐标的年份 由于横坐标过多时,echarts会自动隐藏掉一些横坐标,因此,需要得到显示的横坐标, 使用axisLabel.formatter可以获取到显示的横坐标, 通 ...

  2. echarts散点图搭配时间轴

    1.echarts搭配时间轴可以很直观的看到数据的动态变化,那么如何实现呢?请看代码. 2.这次做的散点图是学生的成绩随着时间的变化图,就是学生的成绩随着时间的变化而变化. x轴是时间,年月日,和时间 ...

  3. Echarts 动态数据+时间轴格式化

    最近再项目中遇到实时绘制数据波形图,设计到echarts 的时间轴问题,下面是绘制的图 我们直接看option配置项 后面画红框的为x横轴时间轴线格式化的重要部分,你可以根据设计原图的格式化自己想要的 ...

  4. ECharts xAxis.type='time'时间轴时卡顿问题

    原文首发于我的个人网站: https://lonhon.top/ 卡顿问题出现背景: ECharts^4.0.4 + Vue^2.5.9 option中主要耗能设置为:折线图 + Y轴2 + seri ...

  5. ECharts实例开发学习笔记二——时间轴

    记录一下ECharts时间轴的使用,首先是照着官方的示例做一遍,在这里不要忘了引入timelineOption.js,后面介绍如何动态创建时间轴的记录数,即根据需求可伸缩显示有多少天或者年月等轴标记数 ...

  6. 【echarts高级用法】在地理坐标系中镶嵌柱状图,在加上时间轴让图动起来

    为了冲个官方认证新星博主,发点库存 在地理坐标系中镶嵌柱状图,在加上时间轴让图动起来 将现成的内容加以组合,一直是白嫖的最高级形式.对此,PPAP大叔直呼内行. echarts,作为一款基于JavaS ...

  7. android时间轴折线图,echarts时间轴折线图

    当使用echarts折线图时,每个数据会打点,在数据量小的时候,美观又快捷,但是当数据量过大时,会非常的卡,以及不美观 例如: series: { symbol:'circle', } > EC ...

  8. Echarts(三):含有时间轴的可视化案例1

    这是一篇小白的实现时间轴的可视化的笔记. Timeline说明 timeline 需要操作多个option. "我们把传入 setOption 第一个参数,称为 ECOption,称传统的 ...

  9. echarts的x时间轴显示的月份是英文缩写

    echarts的x时间轴显示的月份是英文缩写 这是因为echarts默认是英文的显示,只需要改成中文就可以显示成中文了,在init的时候加上{ locale: "ZH" }(nul ...

最新文章

  1. Nginx文件描述符泄露?浅析FD_CLOEXEC文件描述符标志
  2. 25岁以上程序员单身手册
  3. Centos7安装Python3.6
  4. 《喜剧之王》- 24/7 - Cagnet
  5. String.prototype.substr()
  6. QT高级编程之QT基本概览
  7. 微信分享调用 -- c#篇
  8. python typeerror_Python 新手必须要注意的错误
  9. 请确保此代码文件中定义的类与“inherits”属性匹配.并且该类扩展的基类(例如 Page 或 UserControl)是正确...
  10. 加快网站速度的最佳做法_(1)最小化http请求
  11. python随机密码生成
  12. bos 获取数据库连接_bos数据库表
  13. 【Axure原型分享】评论元件
  14. 在Outlook中使用Notes功能的入门指南
  15. 转:程序员应该怎样去学习和掌握计算机英语呢?
  16. ajax 异步刷新表格
  17. STM32——外部中断
  18. P4850 [IOI2009]葡萄干raisins 记忆化搜索
  19. jdk动态代理,cglib代理
  20. 汽车发动机如何做保养,名悦集团教你几个小技巧

热门文章

  1. javascript常用代码大全
  2. SQL Azure SU3 现已在全球6座数据中心开始启用
  3. 苹果CEO乔布斯如何工作
  4. c#与halcon模板匹配控制EPSON四轴机器人输出旋转角度
  5. linux 修改时区_如何在 Ubuntu 20.04 上设置或者修改时区
  6. vue点击改变data值_vue 中自定义指令改变data中的值
  7. php编译7教程,LANMP系列教程之php编译安装CentOS7环境
  8. mysql子查询日期比较_数据分析系列 16/32 | MySQL中子查询与联合查询
  9. ViSP创建之VS工程详细创建步骤(命令行方式)
  10. php怎么获取手机屏,使用PHP获得屏幕分辨率