Javascript D3.js折线图,x轴具有任意日期,但希望按顺序显示它们

Javascript D3.js折线图,x轴具有任意日期,但希望按顺序显示它们,javascript,d3.js,Javascript,D3.js,我有一张折线图。x轴有日期,但它们不是按顺序分发的(午餐或周末没有数据),但我想按顺序显示它们。 样本数据和我的样本图如下,我不希望我的图显示没有数据的时间直线,它应该从上一个日期继续 我使用x=d3.time.scale().range([0,width])绘制x线。 有什么想法吗 x y 10:00:00 4 10:10:00 5 10:20:00 3 10:30:00 2 10:40:00 5 10:50:00 3 14:30:00 6 14:40:00 7

我有一张折线图。x轴有日期,但它们不是按顺序分发的(午餐或周末没有数据),但我想按顺序显示它们。 样本数据和我的样本图如下,我不希望我的图显示没有数据的时间直线,它应该从上一个日期继续

我使用
x=d3.time.scale().range([0,width])
绘制x线。 有什么想法吗

x         y
10:00:00  4
10:10:00  5
10:20:00  3
10:30:00  2
10:40:00  5
10:50:00  3
14:30:00  6
14:40:00  7

一个
序数标度就可以了。试着这样做:

x=d3.time.scale().range([0,width])
替换为以下内容:

var x = d3.scale.ordinal()
    .domain(data.map(function(d) {
        return d.date;
    }))
    .rangeRoundBands([0, width], 0.1); 

一个
序数标度就可以了。试着这样做:

x=d3.time.scale().range([0,width])
替换为以下内容:

var x = d3.scale.ordinal()
    .domain(data.map(function(d) {
        return d.date;
    }))
    .rangeRoundBands([0, width], 0.1); 

你想跳过没有数据的日期吗?在这种情况下,我想你需要
d3.scale.ordinal()
而不是
d3.time.scale()
是的,想跳过没有数据的日期你想跳过没有数据的日期吗?在那种情况下,我想你需要
d3.scale.ordinal()
而不是
d3.time.scale()
是的,希望跳过没有数据的日期。谢谢。当我添加这个时,.ticks()函数不起作用。我的函数是xAxis=d3.svg.axis().scale(x).orient(“right”).ticks(5).tickFormat(d3.time.format(dateFormat))ticks()函数是根据范围划分轴标签,例如ticks(5)将范围划分为5并指定标签,但这不会影响范围,即如果使用时间刻度,您的刻度仍将是开始日期和结束日期之间的范围,以及两者之间的所有内容。我相信这将导致显示其他每个x值:
xAxis.tickValues(x.domain().filter(函数(d,i){return!(i%2);})来源:@wilburr90我同意你的看法。此外,我相信从x中删除勾号()将导致显示所有x值。@wilburrr90使用勾号值解决了我的问题。谢谢大家,这很有效,谢谢。当我添加这个时,.ticks()函数不起作用。我的函数是xAxis=d3.svg.axis().scale(x).orient(“right”).ticks(5).tickFormat(d3.time.format(dateFormat))ticks()函数是根据范围划分轴标签,例如ticks(5)将范围划分为5并指定标签,但这不会影响范围,即如果使用时间刻度,您的刻度仍将是开始日期和结束日期之间的范围,以及两者之间的所有内容。我相信这将导致显示其他每个x值:
xAxis.tickValues(x.domain().filter(函数(d,i){return!(i%2);})来源:@wilburr90我同意你的看法。此外,我相信从x中删除勾号()将导致显示所有x值。@wilburrr90使用勾号值解决了我的问题。谢谢大家。