Javascript 在日期D3上添加矩形

Javascript 在日期D3上添加矩形,javascript,csv,svg,d3.js,rect,Javascript,Csv,Svg,D3.js,Rect,我有csv start_dt,end_dt 2012-08-01 00:00:00,2012-08-02 06:30:00 2012-09-02 13:00:00,2012-09-02 15:00:00 2012-09-12 00:00:00,2012-09-12 06:00:00 2012-11-06 05:00:00,2012-11-06 16:00:00 我需要在D3图表的每个跨度上添加一个透明的矩形(start_dt-end_dt),该图表包含一条带有日期时间x轴的线路径 我通过csv

我有csv

start_dt,end_dt
2012-08-01 00:00:00,2012-08-02 06:30:00
2012-09-02 13:00:00,2012-09-02 15:00:00
2012-09-12 00:00:00,2012-09-12 06:00:00
2012-11-06 05:00:00,2012-11-06 16:00:00
我需要在D3图表的每个跨度上添加一个透明的矩形(start_dt-end_dt),该图表包含一条带有日期时间x轴的线路径

我通过csv获取数据

d3.csv("{% static 'historicaldata/csv/bad_data.csv' %}", function(error, data) {
    data.forEach(function(d) {
    d.start_dt = parseDate(d.start_dt);
    d.end_dt = pareseDate(d.end_dt);
});
如何在时间上下文中相对于已经存在的行路径创建这些矩形,并将它们添加到svg容器中

我已经定义了维度

height = 275 - margin.top - margin.bottom;
编辑:


你只需要使用你的x刻度根据开始日期设置矩形的x坐标,并将宽度设置为结束日期和开始日期的x刻度值之差

例如,如果希望矩形跨越图表的整个高度,可以执行以下操作:

svg.selectAll('.time-span-rect')
  .data(data)
  .enter().append('rect')
    .attr('class', 'time-span-rect')
    .attr('x', function(d) { return x(d.start_dt); })
    .attr('y', 0)
    .attr('width', function(d) { return x(d.end_dt) - x(d.start_dt); })
    .attr('height', height);
然后,如果希望它们是透明的,可以设置

.attr('fill', 'transparent')
或以css中的类为目标:

.time-span-rect {
  fill: transparent;
}

这是一个可以使用时间跨度数据和随机线图查看的示例。我把x比例变成了a,而不是线性比例,因为它使轴的工作变得更简单。你可能想考虑做同样的事情。此外,我还制作了矩形的填充青色,以便它们显示出来。只需将css填充更改为透明。希望这会有所帮助。

您只需使用x刻度根据开始日期设置矩形的x坐标,并将宽度设置为结束日期和开始日期的x刻度值之差

例如,如果希望矩形跨越图表的整个高度,可以执行以下操作:

svg.selectAll('.time-span-rect')
  .data(data)
  .enter().append('rect')
    .attr('class', 'time-span-rect')
    .attr('x', function(d) { return x(d.start_dt); })
    .attr('y', 0)
    .attr('width', function(d) { return x(d.end_dt) - x(d.start_dt); })
    .attr('height', height);
然后,如果希望它们是透明的,可以设置

.attr('fill', 'transparent')
或以css中的类为目标:

.time-span-rect {
  fill: transparent;
}

这是一个可以使用时间跨度数据和随机线图查看的示例。我把x比例变成了a,而不是线性比例,因为它使轴的工作变得更简单。你可能想考虑做同样的事情。此外,我还制作了矩形的填充青色,以便它们显示出来。只需将css填充更改为透明。希望这会有所帮助。

您只需使用x刻度根据开始日期设置矩形的x坐标,并将宽度设置为结束日期和开始日期的x刻度值之差

例如,如果希望矩形跨越图表的整个高度,可以执行以下操作:

svg.selectAll('.time-span-rect')
  .data(data)
  .enter().append('rect')
    .attr('class', 'time-span-rect')
    .attr('x', function(d) { return x(d.start_dt); })
    .attr('y', 0)
    .attr('width', function(d) { return x(d.end_dt) - x(d.start_dt); })
    .attr('height', height);
然后,如果希望它们是透明的,可以设置

.attr('fill', 'transparent')
或以css中的类为目标:

.time-span-rect {
  fill: transparent;
}

这是一个可以使用时间跨度数据和随机线图查看的示例。我把x比例变成了a,而不是线性比例,因为它使轴的工作变得更简单。你可能想考虑做同样的事情。此外,我还制作了矩形的填充青色,以便它们显示出来。只需将css填充更改为透明。希望这会有所帮助。

您只需使用x刻度根据开始日期设置矩形的x坐标,并将宽度设置为结束日期和开始日期的x刻度值之差

例如,如果希望矩形跨越图表的整个高度,可以执行以下操作:

svg.selectAll('.time-span-rect')
  .data(data)
  .enter().append('rect')
    .attr('class', 'time-span-rect')
    .attr('x', function(d) { return x(d.start_dt); })
    .attr('y', 0)
    .attr('width', function(d) { return x(d.end_dt) - x(d.start_dt); })
    .attr('height', height);
然后,如果希望它们是透明的,可以设置

.attr('fill', 'transparent')
或以css中的类为目标:

.time-span-rect {
  fill: transparent;
}


这是一个可以使用时间跨度数据和随机线图查看的示例。我把x比例变成了a,而不是线性比例,因为它使轴的工作变得更简单。你可能想考虑做同样的事情。此外,我还制作了矩形的填充青色,以便它们显示出来。只需将css填充更改为透明。希望能帮上忙。

做一把小提琴,我们就可以为您效劳了。Okay@saikiran我正在使用的moight版本无效,您将无法访问数据。但是如果你愿意的话,我会编一些代码。您想要整个javascript还是只想要有问题的函数?代表此d3.csv(“{%static'historicaldata/csv/bad_data.csv”%}”,函数(错误,数据){//xxxxx}声明一个变量为数据,并用您的数据初始化它。对不起,我不太确定我是否理解您的意思。请稍做修改,然后我们可以为您做些什么。Okay@saikiran我正在使用的moight版本不起作用,您将无法访问数据。但如果您愿意,我将提供一些代码。您是想要整个javascript还是只需要有问题的函数?代表此d3.csv(“{%static'historicaldata/csv/bad_data.csv”%}”,函数(错误,数据){//xxxxx}声明一个变量为数据,并用您的数据初始化它。对不起,我不太确定我是否理解您的意思。请稍做修改,然后我们可以为您做些什么。Okay@saikiran我正在使用的moight版本不起作用,您将无法访问数据。但如果您愿意,我将提供一些代码。您是想要整个javascript还是只需要有问题的函数?代表此d3.csv(“{%static'historicaldata/csv/bad_data.csv”%}”,函数(错误,数据){//xxxxx}声明一个变量为数据,并用您的数据初始化它。对不起,我不太确定我是否理解您的意思。请稍做修改,然后我们可以为您做些什么。Okay@saikiran我正在使用的moight版本不起作用,您将无法访问数据。但如果您愿意,我将提供一些代码。您是想要整个javascript还是只需要有问题的函数?代表此d3.csv(“{%static'historicaldata/csv/bad_data.csv”%}”,函数(错误,数据){//xxxxx}声明一个变量为数据,并用您的数据初始化它。对不起,我不确定在实现过程中是否会跟随您以适应我的脚本,但这看起来不错。谢谢@jshanley@jshanleyi我相信你的答案会管用。我只是在把它拿到网上时遇到了一些问题。我从两个CSV中提取数据——一个用于线路,一个用于r矩形。线条画得很好。我就是画不出矩形。如果我要为我画一把小提琴,你介意看一看新的小提琴吗?好了。我的问题函数和样式表在上面。如果你还需要什么,请告诉我,让它工作吧!