const dataProcessing = (arr: any[]) => { return arr .filter(item => typeof item === 'number' || (typeof item === 'string' && !isNaN(parseFloat(item)))) .map(item => (typeof item === 'number' ? item : parseFloat(item))) } const calculateValue = (o:number,value: number, num: number, isMin: boolean) => { if (value === 0) { return 0 }else if(value>0&& Math.abs(value)<1 && isMin==true){ return 0 }else if(value>-1&& value<0 && isMin==false){ return 0 } let base if (Math.abs(o) >= 100) { base = 100 } else if (Math.abs(o) >= 10) { base = 10 } else if (Math.abs(o) >= 1) { base = 1 } else { base = 0.1 } let calculatedValue if (isMin) { if (value < 0) { calculatedValue = value + num * value } else { calculatedValue = value - num * value } } else { if (value < 0) { calculatedValue = value - num * value } else { calculatedValue = value + num * value } } if (base === 0.1) { return parseFloat(calculatedValue.toFixed(1)) } else if (isMin) { return Math.floor(calculatedValue / base) * base } else { return Math.ceil(calculatedValue / base) * base } } // 处理y轴最大最小值 export const yMethod = (arr: any) => { let num = 0.2 let numList = dataProcessing(arr) let maxValue = 0 let minValue = 0 let max = 0 let min = 0 maxValue = Math.max(...numList) minValue = Math.min(...numList) const o=maxValue-minValue min = calculateValue( o,minValue, num, true) max = calculateValue(o,maxValue, num, false) // if (-100 >= minValue) { // min = Math.floor((minValue + num * minValue) / 100) * 100 // } else if (-10 >= minValue && minValue > -100) { // min = Math.floor((minValue + num * minValue) / 10) * 10 // } else if (-1 >= minValue && minValue > -10) { // min = Math.floor(minValue + num * minValue) // } else if (0 > minValue && minValue > -1) { // min = parseFloat((minValue + num * minValue).toFixed(1)) // } else if (minValue == 0) { // min = 0 // } else if (0 < minValue && minValue < 1) { // min = parseFloat((minValue - num * minValue).toFixed(1)) // } else if (1 <= minValue && minValue < 10) { // min = Math.floor(minValue - num * minValue) // } else if (10 <= minValue && minValue < 100) { // min = Math.floor((minValue - num * minValue) / 10) * 10 // } else if (100 <= minValue) { // min = Math.floor((minValue - num * minValue) / 100) * 100 // } // if (-100 >= maxValue) { // max = Math.ceil((maxValue - num * maxValue) / 100) * 100 // } else if (-10 >= maxValue && maxValue > -100) { // max = Math.ceil((maxValue - num * maxValue) / 10) * 10 // } else if (-1 >= maxValue && maxValue > -10) { // max = Math.ceil(maxValue - num * maxValue) // } else if (0 > maxValue && maxValue > -1) { // max = parseFloat((maxValue - num * maxValue).toFixed(1)) // } else if (maxValue == 0) { // max = 0 // } else if (0 < maxValue && maxValue < 1) { // max = parseFloat((maxValue + num * maxValue).toFixed(1)) // } else if (1 <= maxValue && maxValue < 10) { // max = Math.ceil(maxValue + num * maxValue) // } else if (10 <= maxValue && maxValue < 100) { // max = Math.ceil((maxValue + num * maxValue) / 10) * 10 // } else if (100 <= maxValue) { // max = Math.ceil((maxValue + num * maxValue) / 100) * 100 // } // if (maxValue > 1000 || minValue < -1000) { // max = Math.ceil(maxValue / 100) * 100 // if (minValue == 0) { // min = 0 // } else { // min = Math.floor(minValue / 100) * 100 // } // } else if (maxValue < 60 && minValue > 40) { // max = 60 // min = 40 // } else if (maxValue == minValue && maxValue < 10 && minValue > 0) { // max = Math.ceil(maxValue / 10) * 10 // min = Math.floor(minValue / 10) * 10 // } else if (maxValue == minValue && maxValue != 0 && minValue != 0) { // max = Math.ceil(maxValue / 10 + 1) * 10 // min = Math.floor(minValue / 10 - 1) * 10 // } else { // max = Math.ceil(maxValue / 10) * 10 // min = Math.floor(minValue / 10) * 10 // } // if (maxValue > 0 && maxValue < 1) { // max = 1 // } else if (max == 0 && minValue > -1 && minValue < 0) { // min = -1 // } return [min, max] } /** * title['A相','B相',] * data[[1,2],[3,4]] */ // 导出csv文件 const convertToCSV = (title: object, data: any) => { console.log('🚀 ~ convertToCSV ~ data:', data) let csv = '' // 添加列头 csv += ',' + title.join(',') + '\n' // 遍历数据并添加到CSV字符串中 data?.map(item => { csv += item.join(',') + '\n' }) return csv } export const exportCSV = (title: object, data: any, filename: string) => { const csv = convertToCSV(title, data) const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }) const link = document.createElement('a') link.href = URL.createObjectURL(blob) link.download = filename link.click() // 释放URL对象 URL.revokeObjectURL(link.href) }