關於echart的x軸固定為0-24小時顯示一天內的數據


需求: 

  echart折線圖橫坐標x軸固定顯示為0-1-2-3-...-23-24一共24小時的數據.

  根據需求,我在網上以及echart官網,發現x軸無論type是類目軸還是時間,都是自動處理的,尤其是數據量過多的情況,x軸時間無法准確控制

 

實現效果:

 

 

 

 

代碼解決思路:

  分析造成x軸時間無法固定的原因是數據里的時間具有不確定性,於是我在原數據的基礎上增加了一條時間分別是00:00:00 - 01:00:00 -23:00:00, 值為空的數據(該條折線不顯示,僅用於撐開x軸)

 1   var mytime24 = new Array()
 2     var i = 0;
 3     var now_data = new Date()
 4     var year_now = now_data.getFullYear(),month_now = now_data.getMonth() + 1, day_now = now_data.getDate()
 5     var time_pre = `${year_now}/${month_now}/${day_now} 00:00:00`
 6         var ttt = (new Date(time_pre)).getTime()
 7         for (; i < 25; i++) {
 8         mytime24.push([ttt, '']);//傳入value的值為空則該值點不會顯示在圖表中
 9         ttt = ttt + 3600000;
10     }

  將數據傳入series:

1 str.push({
2     name: '',
3     type: 'line', 
4     data: mytime24,//空數據
5 },{
6     name: '',
7     type: 'line', 
8     data: value,//原數據
9 })

  配置myChart.setOption,在xAxis設置24等分,並在formatter中格式化時間,只顯示小時

myChart.setOption({
                xAxis: {
                    type: 'time',
                    splitNumber: 24,
                    splitLine: {
                        show: false
                    },
                    axisLine: {
                        lineStyle: {
                            color: '#ccc',
                        }
                    },
                    axisLabel: {// 格式化數據只顯示時間的小時
                        formatter: function (value, index) {
                            var data = new Date(value)
                            var hours = data.getHours()
                            return hours
                        }
                    },
                    data: []
                },
                yAxis: {
                    min: minY, 
                    max: maxY, 
                },
                series: str
            });

 

結束!感謝

(


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM