2015-10-16 2 views
0

У меня есть два массива javasrcript для передачи данных в линейной диаграмме d3.js. Я хочу сопоставить строковое значение как домен x оси. Но это неверное отображение. Data2 массив содержит год как строковые значения.d3 строка строки строки как домен x оси

xScale = d3.scale.linear().range([MARGINS.left, WIDTH - MARGINS.right]).domain(data2.map(function (d) { return d.year; })), 

, а затем lineGen(data2) дает значения NaN.

JsFiddle здесь: http://jsfiddle.net/nyngd3sz/

Очень новый для d3.js. Это может быть небольшая ошибка.

Спасибо.

+0

Если значения выглядят как цифры, то 'lineGen (data2.map (Number))' должен помочь. или в другом коде, 'return + d.year; } ', чтобы заставить число, подобное многим примерам d3 ... – dandavis

+0

Значения не являются номерами, которые являются проблемой. Данные - это строка. например, «Регион 1», «Регион 2» и т. д. –

ответ

3

Поскольку значения представляют собой строки, а не числа, вам придется использовать порядковые шкалы. См. Еще here.

Попробуйте этот путь.

var xScale = d3.scale.ordinal().range([MARGINS.left, WIDTH - MARGINS.right]).domain(data2.map(function (d) { return d.year; })) 
+1

Используемые диапазоны вместо диапазона, и это получилось идеально. Большое спасибо. –

+0

Рад, что это помогло :) – Gilsha

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