使用 d3 对数刻度而不是线性刻度

Posted

技术标签:

【中文标题】使用 d3 对数刻度而不是线性刻度【英文标题】:Use d3 log scale instead of linear scale 【发布时间】:2013-02-16 07:16:12 【问题描述】:

我正在尝试根据http://mbostock.github.com/d3/talk/20111116/bar-hierarchy.html 制作图表,唯一的区别是我想对 x 轴使用对数刻度。

这是我的小提琴:http://jsfiddle.net/JhDVC/5/

如您所见,x 轴在第 4 行定义:

x = d3.scale.linear().range([0, w]),

如果我改变它

x = d3.scale.log().range([0, w]),

然后它不起作用(什么都没有渲染),抛出这些错误消息:

Error: Invalid value for <rect> attribute  

更改域设置

x.domain([0, root.value]).nice();

x.domain([1, root.value]).nice();

向我显示 z 轴(名称),但仍然没有条形或值。

【问题讨论】:

【参考方案1】:

还有一些其他地方设置了规模的域。您还需要更新这些内容。

工作 jsfiddle here.

这里有一些代码可以让我发布这个:

x.domain([1, root.value]).nice();

【讨论】:

【参考方案2】:

您的范围包括零 - log(0) 未定义。

【讨论】:

... 只是尝试将线性轴刻度切换为对数时很容易忘记??

以上是关于使用 d3 对数刻度而不是线性刻度的主要内容,如果未能解决你的问题,请参考以下文章

对数刻度返回 NaN

将 Auriotouch 线性刻度更改为对数

对数刻度上的闪亮滑块

如何适应对数刻度[重复]

d3.js - 开始和结束刻度

d3.js - 对数刻度,范围为零和零