Toggle navigation
演示睡眠分析(单位:小时)
By
因***凡
2020-11-12 12:07:52
脚本
16
21
作品使用的第三方脚本
数据管理
上传数据
支持小于 5M 任意格式(csv, xlsx, json, xml, ...)的数据文件
上传后可以通过生成的文件链接异步获取托管的数据。
历史数据
0 条
无历史数据
代码修改记录
信息提示
保存作品
对当前截图不满意?你还可以
上传本地截图
重新截图
作品名称
作品描述
标签
geo
grid
legend
markLine
markPoint
bar
effectScatter
line
lines
map
timeline
title
toolbox
tooltip
visualMap
作品默认版本
最新
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
20:11:45
图表已生成
整理代码
刷新
代码
var xArray = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]; //X轴线数据 var sleepStartArray = [23, 22, 23, 5, 20, 4, 21]; //睡眠开始时间 var sleepEndArray = [8.5, 9, 7.2, 8.1, 8.8, 7.8, 9.4]; //睡眠结束时间 var blockbottomData = [1, 3.5]; //下块 var blocktopData = [8.8, 10.8]; //上块 var flag1 = (blocktopData[0] - blockbottomData[1]).toFixed(2); var flag2 = (blocktopData[1] - blockbottomData[0]).toFixed(2);; var zdata = []; //如果出现0点之后睡觉的情况 用此数据进行垫底 var hideData = []; //0点之前睡觉 用此数据进行垫底 var flag = 0; //判断是否出现0点之后睡觉的情况 for (var i = 0; i < sleepStartArray.length; i++) { //将起床时间和睡眠时间相比 如果起床时间大于睡眠时间则是0点之后睡觉 反则是0点之前 if (sleepStartArray[i]*1 > sleepEndArray[i]*1) { hideData.push(sleepStartArray[i] * 1 - 24 * 1); sleepEndArray[i] = (24 - sleepStartArray[i] *1) + sleepEndArray[i] * 1; zdata.push("-"); } else { hideData.push("-"); //跨了0点了!! flag = 1; zdata.push(sleepStartArray[i] * 1); //因为是堆叠 所以需要减去堆的值 sleepEndArray[i] = ((sleepEndArray[i] * 1 - sleepStartArray[i] * 1).toFixed(1))*1; } } function getBarColor(index, params) { var _v; if (params == "yc") { _v = sleepEndArray[index]*1; if (_v <= flag1) { return '#e0b01e'; //橙色 } else if (_v <= flag2) { return '#73bd1e'; //绿色 } else { return '#343e75'; //深蓝色 } } else { _v = params.value; if (_v <= flag1) { return '#e0b01e'; } else if (_v <= flag2) { return '#73bd1e'; } else { return '#343e75'; } } } var option = { title: { text: '演示睡眠分析(单位:小时)', subtext: '起床时间', sublink: 'https://www.cnblogs.com/lightmusic/p/12761239.html' }, tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }, formatter: function (params) { var tar = params[1]; return tar.name + '
' + tar.seriesName + ' : ' + tar.value + '小时'; } }, grid: { left: '3%', right: '6%', bottom: '3%', containLabel: true }, xAxis: [{ type: 'category', axisLabel: { color: '#ADADAD', fontSize: "11" }, axisLine: { lineStyle: { color: '#ADADAD', } }, axisTick: { show: false, lineStyle: { color: "#ADADAD" } }, data: xArray }], yAxis: [{ type: 'value', // min:-1, // max:15, // splineNumber:4, splitLine: { show: true, lineStyle: { color: '#ADADAD' }, }, axisLabel: { show: true, interval: 'auto', color: '#ADADAD', fontSize: "11" }, axisLine: { lineStyle: { color: '#ADADAD', width: 1 }, }, axisTick: { show: false }, axisLabel: { formatter: function (value, index) { console.log(value,index); if (value * 1 < 0) { //如果小于0 则进行替换 return 24 - (Math.abs(value * 1))+ ' :00'; } return value+ ':00'; } } }], series: [{ name: '睡觉时间0点之前', type: 'bar', stack: '总量', itemStyle: { normal: { color: function (params) { return getBarColor(params.dataIndex, 'yc'); } } }, data: hideData }, { name: "遮挡数据0点之后", stack:"总量", type: "bar", barGap: '-100%', itemStyle: { color: '#f3f3f3', borderColor: "#f3f3f3" }, tooltip: { show: false }, z: 0, data: zdata }, { name: '睡眠时长', type: 'bar', stack: '总量', itemStyle: { // color:'#343e75', normal: { color: function (params) { //三重判断 1 2.5 - 9.3 10.8 return getBarColor(null, params); } } }, label: { show: true, position: 'inside', // formatter:function(item){ // console.log(item); // return item.value*1 + Math.abs(hideData[item.dataIndex])*1; // } }, tooltip: { show: true, // formatter:function(item,index){ // console.log(item,index); // } }, data: sleepEndArray, z:0, markArea: { silent: false, itemStyle: { color: "rgba(45,105,132,.4)", }, label: { show: true, position: 'right', rotate: "-60", fontSize: "10" }, data: [ [{ name: "标域一", x: "星期一", yAxis: blocktopData[0] }, { x: "星期日 ", yAxis: blocktopData[1] } ], [{ name: "标域二", x: "星期一", yAxis: blockbottomData[0] }, { x: "星期日", yAxis: blockbottomData[1] } ] ] } } ] }; console.log("垫底的数据", hideData); console.log("结束时间", sleepEndArray); console.log("zdata", zdata); console.log("标值", flag1,flag2);