无法在x轴上绘制月份折线图

line chart unable to draw with month on x axis

本文关键字:绘制 折线图      更新时间:2023-09-26

当我使用json数据中的日期字段时,我无法在x轴上以月为单位绘制折线图然后它来了,而使用从该日期开始的月份它不会绘制和控制台也没有显示任何错误,我在这里给出了使用json数据的场景的fiddle http://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; })]);

这段代码工作得很好,但我已经在小提琴中展示了它不能只使用月份类型

在x标度(这是一个时间标度)中使用d.activemonth。所以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相同)。