Используйте масштаб шкалы d3 вместо линейной шкалы

Я пытаюсь сделать диаграмму на основе 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 width="NaN" 

Изменение настройки домена из

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

к

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

показывает мне ось z (имена), но по-прежнему нет баров или значений.

Ответ 1

Есть несколько других мест, где установлен домен для шкалы. Вам также необходимо обновить их.

Работа jsfiddle здесь.

И вот какой-то код, чтобы он мог опубликовать это сообщение:

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

Ответ 2

Ваш диапазон включает ноль - журнал (0) - undefined.