Javascript 如何使用d3.js处理条形图中的值log 0?

Javascript 如何使用d3.js处理条形图中的值log 0?,javascript,d3.js,bar-chart,c3.js,Javascript,D3.js,Bar Chart,C3.js,我已经尝试使用d3.js+c3.js来可视化数据。在右y轴,我需要柱状图的对数刻度。我已经遵循了来自的提示,并且它们奏效了 但问题是,当数据集中有数据0时,它会使条形图不显示。我尝试通过修改处理缩放的函数来处理此问题,如下所示: for(var i=1; i<data_test_original.length; i++){ if (data_test_original[i] === 0){ data_logscale_tweet[i] = 0; }

我已经尝试使用d3.js+c3.js来可视化数据。在右y轴,我需要柱状图的对数刻度。我已经遵循了来自的提示,并且它们奏效了

但问题是,当数据集中有数据0时,它会使条形图不显示。我尝试通过修改处理缩放的函数来处理此问题,如下所示:

for(var i=1; i<data_test_original.length; i++){
    if (data_test_original[i] === 0){
        data_logscale_tweet[i] = 0;
    }
    else {
        data_logscale_tweet[i] = Math.log(data_test_original[i]) / Math.LN10; 
    }      
}
您可以从这个窗口查看图表


您可以在此图表中看到,对于数据值0,条形图中显示值1。我的问题是:对于数据值0,如何将条形图值设置为0而不是1?

对数刻度应仅用于正数。如果你有一个零或负数,对数刻度没有意义,零应该显示为负无穷大,负数根本不能显示。嗯,,,,thx…但是当我尝试使用matlab时,对数0可以处理,也许你知道使用d3.js处理这种情况的一个技巧:你可以将它设置为适当的非常负数,比如-1337,而不是0。它仍然是不正确的,但它看起来或多或少是应该的。thx@Amadan,,,我会尝试你的建议:我编辑了一点你的问题,使它更清楚。希望我没有把事情弄糟。请查收。
data_test_original = ['data3', 0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,3,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,15,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,12,0,41,0,4,0,5,0,29,0,0,0,0,0,0,0,0,0,0,0,11,0,19,23,87,0,83,0,17,13,36,0,10,1,6,0,2,0,1,3,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,3,0,0,0,1,0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,0,2,0,0,0,43,9,10,9,2,0,0,0,0,1,4,0,0,2,0,9,2,0,0,0,0,0,1,0,0,3,0,0,0,0,0,0,0,1,0,0,0,0,0,2,0,4,0,0,0,6,0,8,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,30,50,100]