2015-07-03 3 views
0

Я построил оси X и Y. У меня есть пара точек, которые нужно показать на оси. Мои точки изменяются для оси X от 4,5 до 8 и для оси Y от 2 до 4.Масштабирующая ось с D3 JavaScript

Вы можете найти DEMO того, что я сделал.

function kmeans(){ 
    x_means[0] = 5.9; 

    plotMeans(); 
} 

Проблема в этой диаграмме показывает такие точки, как 0,59. Однако я не вижу, когда я даю значение 5.9, так как оно выпадает из графика.

Любые идеи о том, как это решить?

Спасибо!

ответ

0

Если вы проверяете вашу консоль JavaScript, вы увидите сообщение об ошибке:

Error: Invalid value for <circle> attribute cy="NaN" 

Это происходит потому, что данные, которые вы кормите Д3:

> numeric.transpose([[0.59],[]]) 
    Array[2] 
     0: 0.59 
     1: undefined 

Так что:

.attr("cy", function(d, i){return Y(d[1]);}); 

- операция по неопределенным.

редактирует

Do'h, просто перечитайте свой вопрос. Ваши весы нуждаются в домене , это промежуток пространства пользователя вашего координатного пространства. Диапазон то есть интервал пикселя вашего координатного пространства. Шкала отображает два вместе:

var X = d3.scale.linear() 
    .range([0, width]) //<-- 0 to 960 pixels 
    .domain([0,10]); //<-- maps to coordinates 0 to 10 

См обновления here.

Я также модифицировал его, чтобы использовать надлежащую ось, чтобы было легче визуализировать.

+0

спасибо. Как я могу изменить данные, которые я подаю на d3? Буду признателен за любую помощь. – supaplex

+0

Я думаю, что это из-за этой строки: 'var components = svg.selectAll (" line.ax ") .data ([ .data ([ [[0.0, 0.5], [1, 0.5]," X "], [ [0.5, 0.0], [0.5, 1], «Y»] ], функция (d, i) {return d [2];}) ;, но я не знаю, как я должен изменить эти данные значения. – supaplex

+0

Ваши линии рисуют хорошо. Это ваш круг, это проблема. Вы никогда не присваиваете значение 'y_means' ... – Mark

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