Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在y轴上将数据显示为KB、MB、GB、TB_Javascript_Charts_D3.js_Data Visualization - Fatal编程技术网

Javascript 如何在y轴上将数据显示为KB、MB、GB、TB

Javascript 如何在y轴上将数据显示为KB、MB、GB、TB,javascript,charts,d3.js,data-visualization,Javascript,Charts,D3.js,Data Visualization,我正在绘制一个图表,显示服务器上的流量。我想在y轴上将单位显示为KB、MB等。任何意见如何通过d3轴标度进行此操作。您可以使用: var bytesToString=函数(字节){ //用一种方式写,而不是用最漂亮的方式写。 var fmt=d3.format('.0f'); 如果(字节

我正在绘制一个图表,显示服务器上的流量。我想在y轴上将单位显示为KB、MB等。任何意见如何通过d3轴标度进行此操作。

您可以使用:

var bytesToString=函数(字节){
//用一种方式写,而不是用最漂亮的方式写。
var fmt=d3.format('.0f');
如果(字节<1024){
返回fmt(字节)+“B”;
}else if(字节<1024*1024){
返回fmt(字节/1024)+“kB”;
}else if(字节<1024*1024*1024){
返回fmt(字节/1024/1024)+“MB”;
}否则{
返回fmt(字节/1024/1024/1024)+“GB”;
}
}
var xScale=d3.scale.log()
.domain([1,Math.pow(2,40)])
.范围([0480]);
var xAxis=d3.svg.axis()
.scale(xScale)
.orient('左')
.tickFormat(bytesToString)
.滴答声值(d3.范围(11).映射(
函数(x){return Math.pow(2,4*x);}
));

不过,您还需要为
tickValues
使用您自己的值。

请详细说明您希望它的外观。是否希望KB和MB位于同一轴上?比例是线性的吗?你想要KB的值只达到某个阈值吗?我想要一个线性刻度。理想情况下,KB和MB不应该在同一个尺度上,是的,我们可以对值设置阈值,以获得所有值的统一尺度。例如,如果数据中的最高通信量为150KB,则y轴上的合成比例可能为0 KB、50 KB、100 KB、150 KB。这与我的解决方案很接近,但尚未完全解决。我的要求是为它创建一个线性刻度,就像我在上面的评论中描述的那样。