Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3:调整x轴大小和重新定位圆_Javascript_D3.js - Fatal编程技术网

Javascript D3:调整x轴大小和重新定位圆

Javascript D3:调整x轴大小和重新定位圆,javascript,d3.js,Javascript,D3.js,我继承了一个D3图表,它在一个时间轴上显示事件,事件显示为圆圈。 要建立x轴,页面使用以下命令,其中show_date是csv文件中的一列 x.domain(d3.extent(data, function(d) { return d.show_date; })); 我需要能够更改时间线以显示从今天到未来4周、未来3个月、6个月和12个月的事件。我有一个按钮来调用函数 <input class="btn" id="weeks4" type="button" value="Next 4 w

我继承了一个D3图表,它在一个时间轴上显示事件,事件显示为圆圈。 要建立x轴,页面使用以下命令,其中show_date是csv文件中的一列

x.domain(d3.extent(data, function(d) { return d.show_date; }));
我需要能够更改时间线以显示从今天到未来4周、未来3个月、6个月和12个月的事件。我有一个按钮来调用函数

<input class="btn" id="weeks4" type="button" value="Next 4 weeks" onclick="timelineView(28);"/>
它成功地更改了x轴以查看正确的时间量,但所有的圆都移动到图表的最左侧。当我检查一个圆时,我可以看到cx值是一个日期而不是一个数字。 在代码的其他地方,我发现了这一点,这是图表首次加载时使用的

.attr("cx", function(d) { return d.data.x; })
所以我也尝试过使用它,但是圆圈保持在原来的位置。如何使圆与更新的x轴内联移动?我还一直在使用.exit(),因为要显示的圆圈将比图表首次加载时少,但还没有找到任何地方。

试试这个

您应该检查您的刻度类型
scaleBand
scaleLinear
scaleTime
等,它必须是
scaleTime
, 将域更改为

x.domain([new Date()*1, new Date().getTime()+(days)]);
尝试
console.log

.attr("cx", function(d) { console.log(d.show_date); return d.show_date; });
如果返回日期为日期而不是数字,则更改为

.attr("cx", function(d) { console.log(d.show_date); return new Date(d.show_date)*1 });
如果不工作,试着发布一些工作代码,这样一些人可以更好地理解

如果您的scale是
var x=d3.scaleTime().range([0,width])

试一试


我将代码更改为您的前两个建议,其中一个圆圈的cx值为“2019年1月1日星期二00:00:00 GMT+1100(澳大利亚东部夏令时)”(每个圆圈显示相似)。然后我应用了你的第三个建议,cx值为1546261200000,所有圆圈都消失了。我想提供工作代码,但不确定在不发布所有500+行的情况下发布什么。先生,您是否更改了域?您使用什么比例?var x=d3.scaleTime().range([0,width]);try.attr(“cx”,函数(d){console.log(d.show_date);返回x(d.show_date);});哇,成功了,谢谢。我只需要知道如何应用.exit()来删除x轴以外的事件。
.attr("cx", function(d) { console.log(d.show_date); return new Date(d.show_date)*1 });
.attr("cx", function(d) { console.log(d.show_date); return x(d.show_date) });