линейный график невозможно нарисовать с месяцем по оси x

#javascript #jquery #d3.js

#javascript #jquery — запрос #d3.js #jquery

Вопрос:

Я не могу нарисовать линейную диаграмму в месяцах по оси x, когда я использую поле даты из данных json, затем оно появляется при использовании месяца с этой даты, оно не рисуется, и консоль также не показывает никаких ошибок, я привел здесь fiddle для этого сценария с данными jsonhttp://jsfiddle.net/6zrMc/7

 data.forEach(function(d) {
    d.date =parseDate(d.date);  
    d.close =  d.close;
});
var valueline = d3.svg.line()
.x(function(d) { return x(d.date); })
.y(function(d) { return y(d.close); });    
x.domain(d3.extent(data, function(d) { return d.date; }));
y.domain([0, d3.max(data, function(d) { return d.close; })]);
  

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

Ответ №1:

Вы используете d.activemonth в своей x-шкале (которая представляет собой временную шкалу). Так d.activemonth должен быть объект-дата. Способ parseMonth определен (без .parse ), он преобразует объект даты в строку. Итак

 parseMonth(new Date(d.date))
  

Вернет строку Oct и x(d.activemonth) будет x('Oct') , что недопустимо, поскольку x принимает только объекты даты. Решение состоит в том, чтобы изменить

 d.activemonth = parseMonth(new Date(d.date));
  

например, к допустимому объекту даты

  d.activemonth = new Date(d.date);
  

(Который будет таким же, как d.date ).

Комментарии:

1. Я не понял, пожалуйста, можете ли вы исправить в скрипке, чтобы я мог иметь четкое представление об этом

2. хорошо, я понял это, и я тоже пробовал, но на самом деле результат похож на ср чт, чего я не хочу, это должны быть только названия месяцев по оси x и количество, которое y, я спросил тебя снова

3. братан 1 последнее, когда у меня есть более одной записи с тем же месяцем, как я могу что-то изменить, потому что он всегда переписывает одно и то же значение, как в этой скрипке jsfiddle.net/6zrMc/15

4. независимо от того, что вы указали, это не между месяцем и количеством, а между датой и количеством, я хочу нарисовать график между месяцем и количеством, так что это неправильное решение jsfiddle.net/6zrMc/12