echats 时间直方图示例

需求背景

某订单有N个定时任务,每个任务的执行时间已经确定,希望直观的查看该订单的任务执行趋势

查询SQL:

sql 复制代码
select UNIX_TIMESTAMP(DATE_FORMAT(exec_time,'%Y-%m-%d %H:%i')) execTime, count(*) from `order_detail_task` where order_no = '20240219085752308913310000110' GROUP by execTime order by execTime;

把查询结果copy出来,粘贴到 https://echarts.apache.org/zh/spreadsheet.html,转换成二维数组

把转换好的数据copy出来,代入到 baseData 中的 new Map() 中。

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ECharts 时间直方图</title>
    <!-- 引入 ECharts -->
    <script src="https://cdn.jsdelivr.net/npm/echarts@5.1.2/dist/echarts.min.js"></script>
</head>
<body>
    <!-- 创建一个容器来放置图表 -->
    <div id="chart" style="width: 100%; height: 800px;"></div>

    <script>
        // 创建 ECharts 实例
        var myChart = echarts.init(document.getElementById('chart'));
    
        // 初始数据, 数据库中统计结果, key为时间戳, value为个数
        let baseMap = new Map([[1708304400,8],[1708304460,4],[1708304520,8],[1708304580,4],[1708304640,5],[1708304700,3],[1708304760,10],[1708304820,2],[1708304880,6],[1708304940,5],[1708305000,6],[1708305060,5],[1708305120,6],[1708305180,5],[1708305240,7],[1708305300,6],[1708305600,5],[1708305660,6],[1708305720,9],[1708305780,8],[1708305840,4],[1708305900,10],[1708305960,13],[1708306020,10],[1708306080,13],[1708306140,10],[1708306200,15],[1708306260,10],[1708306320,9],[1708306380,13],[1708306440,11],[1708306500,6],[1708306560,1],[1708306860,2],[1708306920,9],[1708306980,5],[1708307040,4],[1708307100,6],[1708307160,3],[1708307220,4],[1708307280,3],[1708307340,3],[1708307400,5],[1708307460,4],[1708307520,3],[1708307580,2],[1708307640,4],[1708307700,3],[1708307760,6]]);
        // map集合的keyset
        let keys = Array.from(baseMap.keys());
        // 最小key(起始时间戳)
        let startTime = Math.min(...keys);
        // 最大key(结束时间戳)
        let endTime = Math.max(...keys);
        let data = [];
        // 以分钟(60000ms)为步长
        for (let i = startTime; i <= endTime; i += 60) {
            if (baseMap.has(i)) {
                data.push([i*1000, baseMap.get(i)]);
            } else {
                // 第i分钟没有值,则value=0
                data.push([i*1000, 0]);
            }
        }

        option = {
            tooltip: {
                trigger: 'axis',
                position: function(pt) {
                    return [pt[0], '10%'];
                }
            },
            title: {
                left: 'center',
                text: '直方图'
            },
            toolbox: {
                feature: {
                    dataZoom: {
                        yAxisIndex: 'none'
                    },
                    restore: {},
                    saveAsImage: {},
                    magicType: {
                        type: ['line', 'bar']
                    },
                    dataView: {
                        show: true,
                        title: 'Data View'
                    }
                }
            },
            xAxis: {
                type: 'time',
                maxInterval: 60000,
                boundaryGap: false,
                axisLabel: {
                    rotate: 45
                },
            },
            yAxis: {
                type: 'value',
                boundaryGap: [0, '100%']
            },
            dataZoom: [{
                type: 'inside',
                filterMode: 'filter',
                start: 0,
                end: 30
            }, {
                start: 0,
                end: 30
            }],
            series: [{
                name: 'Fake Data',
                type: 'line',
                smooth: true,
                symbol: 'none',
                areaStyle: {},
                data: data
            }]
        };

        // 渲染图表
        myChart.setOption(option);
    </script>
</body>
</html>

效果如下:

相关推荐
甜味橘阳2 分钟前
echarts地图可视化展示
前端·javascript·echarts
图表制作解说(目标1000个图表)16 小时前
ECharts散点图-气泡图,附视频讲解与代码下载
echarts·统计分析·数据可视化·散点图·大屏可视化
NiNg_1_23416 小时前
Echarts连接数据库,实时绘制图表详解
前端·数据库·echarts
qq_589568101 天前
Echarts的高级使用,动画,交互api
前端·javascript·echarts
qq_589568102 天前
数据可视化echarts学习笔记
学习·信息可视化·echarts
m0_748244962 天前
echarts画风向杆
前端·数据库·echarts
学前端的小朱2 天前
Echarts实现大屏可视化
websocket·echarts·nodejs·vue3·vite·koa·cors
图表制作解说(目标1000个图表)3 天前
ECharts柱状图-柱图42,附视频讲解与代码下载
echarts·统计分析·数据可视化·柱状图·大屏可视化
图表制作解说(目标1000个图表)4 天前
ECharts散点图-SymbolShapeMorph,附视频讲解与代码下载
echarts·统计分析·数据可视化·散点图·大屏可视化
图表制作解说(目标1000个图表)4 天前
ECharts关系图-关系图11,附视频讲解与代码下载
echarts·统计分析·数据可视化·关系图·大屏可视化