gpt4 book ai didi

d3.js - 具有域外日期间隔的 LinePlusBarChart

转载 作者:行者123 更新时间:2023-12-04 04:58:30 25 4
gpt4 key购买 nike

我正在使用 angular-nvd3 的 LinePlusBarChart 来显示一些数据,非常像这样:

enter image description here

http://plnkr.co/edit/mrkvM1ihrVRN9jdBFWiF?p=preview

在上面的示例中,x 轴域基于数据的日期值。

如何在 linePlusBarChart 中将 x 轴的日期间隔更改为从 2000 年开始一直持续到 2015 年,即使 2000 年到 2004 年之间没有可用数据?

更新:对于普通的折线图,设置 chart.xDomain = [minDate, maxDate] 可以正常工作。图表正确显示数据,图表 x 轴从 2000 年开始到 2015 年结束。通过使用 chart.lines.xDomain = [minDate, maxDate]chart.bars.xDomain = [minDate, maxDate]linePlusBarChart 中图表的数据也正确显示,但 x 轴未反射(reflect)更改的最小和最大日期。这是显示错误的图像:

enter image description here

图表选项如下所示:

 chart: {
type: 'linePlusBarChart',
height: 300,
margin: {
top: 30,
right: 75,
bottom: 50,
left: 75
},
bars: {
forceY: [0]
},
color: ['#2ca02c', 'darkred'],
x: function(d,i) { return i },
xAxis: {
axisLabel: 'X Axis',
tickFormat: function(d) {
var dx = $scope.data[0].values[d] && $scope.data[0].values[d].x || 0;
if (dx > 0) {
return d3.time.format('%x')(new Date(dx))
}
return null;
}
},
y1Axis: {
tickFormat: function(d){
return d3.format(',f')(d);
}
},
y2Axis: {
tickFormat: function(d) {
return '$' + d3.format(',.2f')(d)
}
},
focusEnable: false
}

最佳答案

我发现问题出在 nvd3 库中。 xDomain 从未在 nv.models.linePlusBarChart 函数中得到尊重。我必须通过添加以下行将 xDomain 拉入 chart._options:

xDomain: {get: function(){return xDomain;}, set: function(_){xDomain=_;}},

然后我将 xDomain 变量添加到更上层的域方法中:

x2 .domain(xDomain || d3.extent(d3.merge(series1.concat(series2)), function(d) { return d.x } ))

我还必须在函数的开头添加 xDomain 作为公共(public)变量。

现在 x 轴刻度标签随数据一起更改。

关于d3.js - 具有域外日期间隔的 LinePlusBarChart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33446737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com