我创建了一个图表js,它的YAxis是根据API响应动态生成的,到目前为止在Yaxis中已经存在
1.49 GB
1.3 GB
1.12 GB
953.67 MB
762.94 MB
572.2 MB
381.47 MB
190.73 MB
0 Bytes
我想要基于以上实现的目标是这样的
2 GB
1 GB
900 MB
800 MB
700 MB
600 MB
500 MB
400 MB
300 MB
200 MB
100 MB
0 BYTES
我创建了一个将数据转换为GB或MB的函数,原始数据看起来像这样
223990547.68666667,25568546.453333333, 44518612.25067709
yAxes: [
{
ticks: {
callback:(v) => {
return this.formatBytes(v)
},
.....
function formatBytes(bytes) {
if (bytes === 0) return '0 Bytes';
const k = 1024;
const dm = decimals < 0 ? 0 : decimals;
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB',
'EB', 'ZB', 'YB'];
if(bytes >= 0) {
const i = Math.floor(Math.log(bytes) / Math.log(k));
if(i <= 0 || i === -1) {
return '0 Byte'
}
let positiveBytes = parseFloat((bytes / Math.pow(k, i)).toFixed(dm));
return parseFloat((bytes / Math.pow(k,i)).toFixed(dm)) + ' ' + sizes[i];
}
}
有什么主意吗?