D3.js 折线图中显示的日期不正确的问题

D3.js 折线图中显示的日期不正确的问题,d3.js,D3.js,我正在为简单的预测构建一个折线图,但我发现最后一个数据点显示的日期不正确 我的代码:--- 示例图像: 即,蓝色和橙色线的最后一点应显示为06-Jul-20,而不是显示11-Jul-20 在第170行中,我使用endDate.setDate(endDate.getDate()+5)在最后一个日期的基础上增加了5天来延长X轴的长度 这是试图在图表中为虚线“趋势”线和蓝线添加额外的空间,以使其相交 这额外的5天似乎是问题的根源。有没有办法解决这个问题 感谢不知何故,setDate函数更改了数据元素,

我正在为简单的预测构建一个折线图,但我发现最后一个数据点显示的日期不正确

我的代码:--- 示例图像:

即,蓝色和橙色线的最后一点应显示为06-Jul-20,而不是显示11-Jul-20

在第170行中,我使用
endDate.setDate(endDate.getDate()+5)在最后一个日期的基础上增加了5天来延长X轴的长度
这是试图在图表中为虚线“趋势”线和蓝线添加额外的空间,以使其相交

这额外的5天似乎是问题的根源。有没有办法解决这个问题


感谢不知何故,
setDate
函数更改了数据元素,因此最后一个数据是日期
11-Jul-20
。 它可以通过使用新变量来计算x域的
endDate
来修复

let newEndDate = new Date(endDate)
newEndDate.setDate(newEndDate.getDate() + 5); // adding more time at the end of the X axix

预{显示:无;}
/*使用CSS的基本样式*/
身体{
字体:15px无衬线;
颜色:#4444;
}
.轴线路径,
.轴线{
填充:无;
笔画:灰色;
形状渲染:边缘清晰;
}
/*通过删除填充并应用笔划来设置线的样式*/
.线路{
填充:无;
行程:#ffab00;
笔画宽度:3;
}
.line2{
填充:无;
行程:398fff;
笔画宽度:3;
}
注册医生{
填充:无;
笔画:灰色;
笔画宽度:3;
}
/*通过指定填充和笔划来设置点的样式*/
多特先生{
填充:#ffab00;
冲程:#fff;
}
.dot2{
填充:#398fff;
冲程:#fff;
}
/*设置标题样式*/
部门名称{
文本对齐:居中;
字体:20px无衬线;
填充顶部:20px;
}
/*在弹出框中设置文本样式*/
分区工具提示{
颜色:白色;
位置:绝对位置;
文本对齐:居中;
填充:6px;
字体:15px无衬线;
背景#ffab00;
边界:0px;
边界半径:8px;
指针事件:无;
}
div.tooltip2{
颜色:白色;
位置:绝对位置;
文本对齐:居中;
填充:6px;
字体:15px无衬线;
背景:398fff;
边界:0px;
边界半径:8px;
指针事件:无;
}
,日期,关闭,创建
2020年6月25日,6月25日
2020年6月26日,6月26日,20日,4日,40日
2020年6月28日,6月28日,20日,8日,40日
2020年6月29日,6月29日,20日,12日,43日
2020年7月1日,7月1日,20日,17日,43日
2020年7月3日,7月3日,20日,22日,44日
2020年7月4日,7月4日,20日,25日,44日
2020年7月6日,7月6日,20日,31日,44日
燃尽图
var margin={顶部:50,右侧:50,底部:50,左侧:50},
宽度=window.innerWidth-margin.left-margin.right-20,
高度=window.innerHeight-margin.top-margin.bottom-80;
var parseDate=d3.time.format(“%d-%b-%y”).parse;
var dateFormat=d3.time.format(“%a%d%b”);
//定义x和y轴
var x=d3.time.scale()
.范围([0,宽度]);
变量y=d3.scale.linear()
.范围([高度,0]);
var xAxis=d3.svg.axis()
.比例(x)
.orient(“底部”)
.tickFormat(d3.time.format(“%d%b”);
var yAxis=d3.svg.axis()
.比例(y)
.东方(“左”);
var div=d3.选择(“主体”).追加(“div”)
.attr(“类”、“工具提示”)
.样式(“不透明度”,0);
var div2=d3.选择(“主体”).追加(“div”)
.attr(“类”、“工具提示2”)
.样式(“不透明度”,0);
//d3线发生器
var line=d3.svg.line()
.x(函数(d){返回x(d.date);})
.y(函数(d){返回y(d.closed);})
.插入(“单调”);
var line2=d3.svg.line()
.x(函数(d){返回x(d.date);})
.y(函数(d){返回y(d.created);})
.插入(“单调”);
//将SVG添加到页面中
var svg=d3.选择(“正文”).追加(“svg”)
.attr(“宽度”,宽度+边距。左侧+边距。右侧)
.attr(“高度”,高度+边距。顶部+边距。底部)
.附加(“g”)
.attr(“转换”、“平移”(+margin.left+)、“+margin.top+”);
//获取数据集
var data=d3.csv.parse(d3.select(“#data”).text();
data.forEach(函数(d){
如果(d.关闭){
d、 日期=d.date=解析日期(d.date);
d、 关闭=+d.关闭;
d、 created=+d.created;
}});
data.pop()//删除最后一行“未定义”
//控制台日志(数据);
//获取X轴范围的最小值和最大值
var startDate=d3.min(数据,函数(d){返回d.date;});
var endDate=d3.max(数据,函数(d){return d.date;});
//
//
让newEndDate=新日期(endDate)
newEndDate.setDate(newEndDate.getDate()+5);//在X轴末端添加更多时间
//
//
//log(startDate.toString());
//log(endDate.toString());
//log(d3.extent(数据,函数(d){返回d.closed;}));
//log(d3.max(数据,函数(d){返回d.closed;}));
//获取Y轴范围的最小值和最大值
var-arr=[];
arr.push(d3.max(数据,函数(d){返回d.closed;}));
arr.push(d3.max(数据,函数(d){返回d.created;}));
arr.push(d3.min(数据,函数(d){返回d.closed;}));
arr.push(d3.min(数据,函数(d){返回d.created;}));
//控制台日志(arr);
//定义轴的长度
x、 域([startDate,newEndDate]);
y、 域(d3.广度(arr));
//导出线性回归
var回归=ss.线性回归(data.map)函数(d){
返回[+d.日期,d.关闭];
}));
var lin=线性回归线(回归);
//基于该范围的起点和终点创建一条线