Angular-nvd3 折线图,线条呈现在图表外

Angular-nvd3 linechart with lines rendered outside chart

我正在使用 Krispos angular-nvd3 来呈现折线图。由于某种原因,线条呈现在图表之外或日期错误。 x 轴是时间刻度,xDomain 的最小值和最大值是使用日期选择器设置的。

设置 xDomain 时,图表将使用选定的开始日期和结束日期作为 x 轴的最小值和最大值来呈现。但是,由于数据集的最短日期早于选定的开始日期,因此线条在时间间隔之外呈现。在此示例中,选择的开始日期为 2015-08-08,结束日期为 2015-11-08:

如果我使用 forceX 而不是 xDomain 来设置最小值和最大值,则线条会在图表网格内呈现。但在这种情况下,数据集的最小日期早于选定的开始日期,因此 x 轴从 2015-07-07 而不是 2015-08- 开始08。如下图所示:

这些是使用的基本图表选项。 xDomainforceX 是动态设置的。

$scope.chartOptions = { 图表: { 类型:'lineChart', y域:[0,5], xDomain: [时刻(data.startDate).valueOf(), 时刻(data.endDate).valueOf()], 使用InteractiveGuideline: true, 交互层:{ showGuideLine:真 }, 行:{ },<br> xScale: d3.time.scale(), x轴:{ showMaxMin: 是的, 旋转标签:-45, tickFormat:函数(d){ return d3.time.format('%Y-%m-%d')(新日期(d)); } }, 身高:350, 利润 : { 底部:100 } } };

我是否需要以某种方式使用范围才能正常工作,即仅在选定的开始和结束日期内呈现数据。

感谢您的意见!

此问题的解决方案是使用图表选项 clamp(),在这种情况下:

xScale: d3.time.scale().clamp(true)

日期比例设置使用 xDomain:

xDomain: [moment(data.startDate).valueOf(), moment(data.endDate).valueOf()]