关于图表x轴显示多余数据的问题

我得到每隔五分钟的原始数据!五分钟为坐标轴下载5.png
下载搭5.png
现在,我把数据两两合并,生成十分钟的坐标轴下载10.png
下载搭10.png
我当时想法是对数据最后一个再相加一次,如果11:05有值得话直接合道11:10中
现在我想10分钟的坐标轴,如果11:05有值,坐标轴加上11:05,显示在11:00-11:10之间,其他坐标还是10分钟,如何实现
下载1.png
下载搭15.png
15分钟呢
下面是我的代码
总时间
`xAxisTotalTime(){

        let m = 5;
        let n = -5;
        this.xAixsTimeData = []
        this.xAixsTotalData =[]
        for(let i=0;i<229;i++){
            n+=5;
        if(n>55){
            n = 0;
            m+=1
        }
        this.xAixsTimeData.push(m+":"+(n>9?n:"0"+n))
        this.xAixsTotalData.push(m+":"+(n>9?n:"0"+n))
        }
        this.setStartData()
    },`

`tenMinuteSel(){

        //定义x轴数组 
        this.xAixsTimeData = this.xAixsTotalData.filter((value,index)=>{
            if(index%2===0){
                return true
            }
        })
        //总乘客
        let resTotal = []
        this.yAxisTotalPassenger.filter((item,index,arr)=>{
            if(index%2 ===0){
                let sumTotal = (arr[index+1]||0)+(arr[index+2]||0);
                resTotal.push(sumTotal)
            }
        })
        resTotal.unshift(this.yAxisTotalPassenger[0])
        this.resTotalPassenger =[]
        this.resTotalPassenger = [].concat(resTotal)
        //出站乘客
        let resOut = []        
        this.yAxisOutPassenger.filter((item,index,arr)=>{
            if(index%2 ===0){
                let sumOut = (arr[index+1]|| 0)+(arr[index+2]||0);
                resOut.push(sumOut)
            }
        })
        resOut.unshift(this.yAxisOutPassenger[0])
        this.resOutPassenger =[]
        this.resOutPassenger = [].concat(resOut)
        //定义 进入的乘客相加
        let resIn = []
        this.yAxisInPassenger.filter((item,index,arr)=>{
            if(index%2 ===0){
                let sum = (arr[index+1]|| 0)+(arr[index+2]||0);
                resIn.push(sum)
            }
        })
        resIn.unshift(this.yAxisInPassenger[0])
        this.resInPassenger =[]
        this.resInPassenger = [].concat(resIn)
        this.drawPassengerChart()
    },`
    `  quarterSel(){
        this.xAixsTimeData = this.xAixsTotalData.filter((value,index)=>{
            if(index%3===0){
                return true
            }
        })
        //总乘客
        let resTotal = []
        this.yAxisTotalPassenger.filter((item,index,arr)=>{
            if(index%3 ===0){
                let sumTotal = (arr[index+1]||0)+(arr[index+2]||0)+(arr[index+3]||0);
                resTotal.push(sumTotal)
            }
        })
        resTotal.unshift(this.yAxisTotalPassenger[0])
        this.resTotalPassenger =[]
        this.resTotalPassenger = [].concat(resTotal)
        //出站乘客
        let resOut = []
        this.yAxisOutPassenger.filter((item,index,arr)=>{
            if(index%3 ===0){
                let sumOut = (arr[index+1]||0)+(arr[index+2]||0)+(arr[index+3]||0);
                resOut.push(sumOut)
            }
        })
        resOut.unshift(this.yAxisOutPassenger[0])
        this.resOutPassenger =[]
        this.resOutPassenger = [].concat(resOut)
        //定义 进入的乘客相加
        let resIn = []
        this.yAxisInPassenger.filter((item,index,arr)=>{
            if(index%3 ===0){
                let sum =(arr[index+1]||0)+(arr[index+2]||0)+(arr[index+3]||0);
                resIn.push(sum)
            }
        })
        resIn.unshift(this.yAxisInPassenger[0])
        this.resInPassenger =[]
        this.resInPassenger = [].concat(resIn)
        this.drawPassengerChart()
    
    写的有点长了,有什么办法简化吗
    
阅读 1.7k
1 个回答
const data = [];
const random = (min, max) => {
    return Math.round(Math.random() * (max - min)) + min;
}
for (let hour = 12; hour < 14; hour++) {
    for (let m = 0; m < 60; m+= 5) {
        data.push({
            date: `2019-10-11 ${hour}:${m}`,
            value:  random(1, 100)
        })
    }
}
const parseData = (data) => {
    let temp = [];
    data.forEach(({date, value}) => {
        // 将 分钟数 分开
        const [s, m] = date.split(':');
        const x = parseInt(Number(m) / 15);
        const key = s + x;
        const index = temp.findIndex(item => item.key === key);
        if (index > -1) {
            temp[index].value += value;
        } else {
            temp.push({
                key,
                value,
                date: s + `:${x * 15}`
            })
        }
    })
    return temp;
}
console.log(data);
console.log(parseData(data))

不知道你的数据结构是什么样子的,我自己模拟了一个数据结构,你大概可以借鉴一下。思路就是,把分钟数提出来,然后除以15分开,这样就每隔15分钟就区分出来了,然后数据累加就行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题