2015-06-17 2 views
-1

Я смотрю на этот код часами и, возможно, это очевидно или просто нуждается в новом наборе глаз, но я отчаянно пытаюсь понять, почему бары на графике aren ' t появляется?Бары на D3 График бара не отображается

Вот скрипку для него: http://jsfiddle.net/u7zs3jwo/1/

Вот JSON:

var bardata = [ 
    { 
     "ts":1431728734, 
     "interval":12, 
     "method":"GET", 
     "host":"beta.familysearch.org", 
     "aggs":{  
     "con":{  //Connect 
      "25":6, 
      "50":6, 
      "75":6, 
      "90":7.1, 
      "95":7.55, 
      "99":7.91, 
      "mn":6, 
      "mx":8, 
      "avg":6.3, 
      "stddv":0.67 
     }, 
     "count":10, 
     "srvbsy":{  
      "25":2100.75, 
      "50":2272, 
      "75":3038.25, 
      "90":3571.4, 
      "95":3627.2, 
      "99":3671.84, 
      "mn":920, 
      "mx":3683, 
      "avg":2452.6, 
      "stddv":836.3 
     } 
     } 
    } 
]; 

Спасибо заранее за любую помощь !!!

+2

Очень странное место для петли. Похоже, вы перебираете данные и создаете SVG для каждого и переставляете этот SVG и т. Д. Для каждого элемента данных .... это намерение? –

+0

При передаче данных в d3 было бы лучше всего использовать массив объектов. Кроме того, из ваших данных неясно, как должна выглядеть финальная диаграмма. Какие значения должны быть построены, а что нет? – Terry

+0

@Alex_B Упс! Я забыл избавиться от цикла. Я только привязал одну часть полного массива (полный массив имеет более 50 копий того, что показано выше). Цель состоит в том, чтобы пройти все 50 из srvbsy.mx и нарисовать их все на одной диаграмме. Я подумал, что если бы мог получить хотя бы одну ценность, то я смог бы получить остальные 50, пройдя через них. – Eswizzle

ответ

0

Данные, переданные в D3, должны быть в виде массива. Поскольку ваш код стоит, вы передаете одно значение. Я отвечаю с предположением, что вы хотите только построить один бар, значение «mx».

Просто изменив код, как показано ниже, появится строка.

Измените принятое значение как массив.

bardata = { 
    ... 
    "mx":[3683], 
    ... 
} 

И измените функцию масштаба, чтобы использовать первый индекс массива «mx».

var vGuideScale = d3.scale.linear() 
    .domain([0, bardata[i].aggs.srvbsy.mx[0]]) // <-- here 
    .range([height, 0]) 

http://jsfiddle.net/u7zs3jwo/2/