2014-05-05 51 views
2

我正在使用NVD3散点图/气泡图。这是对问题here的延续。我正在绘制y轴的对数基2值。但我希望y轴将原始值作为对应于日志基2比例的标签。我无法理解如何去做。nvd3与对数刻度的气泡图

编辑

这是我用来绘制

data[i].values.push({ 
    x: random() 
    , y: log2(yValue) 
    , size: Math.random() 
    }); 

function log2(val) { 
console.log("val = " + val + " : " + Math.log(val)/Math.LN2) 
    return Math.log(val)/Math.LN2; 
} 

现在,y轴刻度具有的log 2的值。我想更改y轴刻度以显示原始值而不是log2值。

感谢,

+0

请把你所拥有的在小提琴或plunker为止。你一定会增加回答问题的机会。 – FernOfTheAndes

回答

2

,而不是直接计算,当你创建自己的数据阵列,保留原样,然后使用一个log scale您轴线日志。

要在NVD3中使用自定义比例,请将其作为参数传递给chart.yScale(scale)chart.xScale(scale)方法。

var chart = nv.models.lineChart() 
     .yScale(d3.scale.log()); 

只是不要尝试使用y值数比例在酒吧或面积图,因为这些自动包含0域中(如果你试图在log(0)密谋什么,你会得到错误!)

一对夫妇的警告:

  • 蜱格式化功能上的工作比其他秤秤数不同;你可能会想把它作为默认值。有关更多信息,请参阅文档(上面的链接)。

  • .nice()方法似乎并没有对数刻度非常有效地开展工作;当我在NVD3实时代码网站上玩时,[1,99]的一个域导致轴上的最后一个tick值为98.999999999。您可能需要明确检查域是以数字开始还是结束。

还要注意,因为你从来没有真正与计算值处理的日志(只是在标尺上的相对位置),你不需要指定基的对数。该文档提到一个logScale.base(number) method,但似乎已经过时......