nvd3 带对数刻度的气泡图

2023-12-02

我正在使用 NVD3 散点图/气泡图。这是问题的延续here。我正在绘制 y 轴的以 2 为底的对数值。但我希望 y 轴将原始值作为与以 2 为底的对数刻度相对应的标签。我无法理解该怎么做。

Edit

这就是我要绘制的内容

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 轴刻度具有 log2 值。我想更改 y 轴刻度以显示原始值而不是 log2 值。

Thanks,


创建数据数组时,不要直接计算日志,而是保持原样,然后使用对数刻度为你的轴。

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

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

只是不要尝试对条形图或面积图中的 y 值使用对数刻度,因为这些值会自动在域中包含 0(如果您尝试在以下位置绘制任何内容,则会出现错误)log(0)!)

一些警告:

  • 刻度格式函数在对数刻度上的工作方式与在其他刻度上的工作方式不同;您可能只想将其保留为默认值。有关更多信息,请参阅文档(上面的链接)。

  • The .nice()该方法似乎在对数尺度上不太有效;当我在 NVD3 实时代码站点上玩时,域 [1,99] 导致轴上的最终刻度值为 98.999999999。您可能需要明确检查域是否以整数开头和结尾。

另请注意,由于您从未真正处理对数的计算值(仅处理刻度上的相对位置),因此无需指定对数的底数。文档提到了一个logScale.base(number) method但这似乎已经过时了......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nvd3 带对数刻度的气泡图 的相关文章

随机推荐