2013-10-09 5 views
0

Я имею очень странный вопрос с чешуйками, если я надену домен (в данном случае) yscale как это .domain([0, d3.max(dataset, function (d) { return d.ycoord; })])странный вопрос с доменом весы

Она настраивает свою ось так, как это только показывают пополам. Странная вещь состоит в том, чтобы решить эту проблему, я попробовал на некоторое время, а затем положить/1 в конце, например, так:

.domain([0, d3.max(dataset, function (d) { return (d.ycoord/1); })])

И это было показать ось правильно, так как в этих скриншотах enter image description here

enter image description here

А также здесь есть полный код на jsfiddle: jsfiddle link

Итак, мой вопрос: почему он ведет себя так? Я действительно не знаю об этом и задавался вопросом, смог ли кто-нибудь решить это!

ответ

0

Проблема в том, что то, что вы интерпретируете как числа (ycoord), фактически являются строками, потому что они поступают непосредственно из CSV. То есть вместо 140 у вас есть «140», который как строка действительно меньше, чем «95». Таким образом, установленный максимум для шкалы неверен. Функции D3, которые действительно требуют числа (например, функция масштабирования), неявно преобразуют строки, которые вы передаете им в номера, поэтому сообщение об ошибке отсутствует.

Чтобы исправить это, просто преобразуйте свои строки в номера, прежде чем делать что-либо еще.

dataset.forEach(function(d) { d.ycoord = +d.ycoord; }); 
+0

спасибо, я думал, что цифры были прочитаны как цифры, а не как строки, которые решили это! – tomtomtom

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