2016-08-15 4 views
0

Я пытаюсь добавить функцию масштабирования в свою гистограмму. То, что я пытаюсь достичь, - это когда пользователь перетаскивает курсор над определенной областью, вы можете увеличить масштаб до этой области и изменить значение оси x, показывая количество дней в этом месяце. this example Я попытался включить те же функции масштабирования и перетаскивания.D3 Масштабирование по оси X

Но я, кажется, получаю эту ошибку:

Error: <rect> attribute transform: Expected number, "translate(NaN,0)". 

То, что я пытаюсь сделать с помощью функции масштабирования однократно наведена на оси х должна меняться с указанием месяца (январь, февраль и т.д.) до дней (1 января, 2 января, 3 января и т. д.). Любая помощь будет рассмотрена. Вот код для функции масштабирования:

function bListener() {   
    x.domain(brush.empty() ? x.domain() : brush.extent()); 

    svg.selectAll(".bar") 
     .attr("transform", function(d) { console.log(d.date); return "translate(" + x(d.date) + ",0)"; }); 

    svg.select(".x axis").call(xAxis); 
}  

Here’s the complete code.

ответ

1

Функция x ожидает, что будет передано число, поэтому d3 может работать с ним.
В настоящее время вы передаете ему строку. d.date в этом случае является строкой "2013-03-21".
Вам необходимо отформатировать это число, чтобы x мог возвращать номер для функции translate.
В этом случае изменить его в date object с помощью x(new Date(d.date))

svg.selectAll(".bar").attr("transform", function(d) { 
    console.log(d.date); 
    return "translate(" + x(new Date(d.date)) + ",0)"; 
}); 
+0

Спасибо за ответ. Я изменил объект данных, но ось x не обновляется. Любая идея о том, как это исправить? http://jsfiddle.net/noobiecode/dty0s24k/35/ – user3837019

+0

ваши функции xAxis группируются с использованием месяцев - '.orient ('bottom') .ticks (d3.time.month) .tickFormat (d3.time.format ('% b% y')). Просто называть это, как и вы, не изменят тики, потому что вы ничего не меняете. Вы должны проверить некоторые руководства по d3 - начать и построить график, а не прыгать и конечный продукт. В долгосрочной перспективе Itll внесет свой вклад. – Craicerjack

+1

Я посмотрел, где я создавал xAxis, и заметил заговор и формат. Собирался вернуться сюда, чтобы опубликовать его, но вы избили меня до него. Что касается «прыжков и конечного продукта». Я создал диаграмму с помощью учебников. Я бы признал, что я не очень осведомлен о D3. – user3837019

Смежные вопросы