我想创建一个带时间x轴的条形图。我在动态设置滴答值时遇到问题。d3js时间轴滴答动态持续时间设置
.ticks(d3.time.minutes, 10)
上面的代码对我的作品,但是当数据较为我想时间将增加到即30分钟
.ticks(d3.time.minutes, 30)
我都试过了,
.ticks(function() { return (dataPassed.length > 5) ? ((d3.time.minutes, 30)) : ((d3.time.minutes, 10)); })
.tickValues(xScale.domain())
上述方式并没有工作。 JSfiddle链接为我的代码:http://jsfiddle.net/hpjqt1dL/20/。我已经把这两个数据集放在那里(数值越来越少)。有人可以帮助我这个。
在此先感谢....
[更新:] 其实,它不只是两个条件我想要的。我更新的代码是:
if (dataPassed.length < 4)
{
var xAxis = d3.svg.axis()
.scale(xScale)
.orient('bottom')
.ticks(d3.time.minutes, 10)
.tickFormat(d3.time.format('%H:%M'))
.tickSize(5);
var boxNoBarWidth = (svgWidth + widthPad)/(dataPassed.length + 3);
}
else if (dataPassed.length > 3 && dataPassed.length < 6)
{
var xAxis = d3.svg.axis()
.scale(xScale)
.orient('bottom')
.ticks(d3.time.minutes, 15)
.tickFormat(d3.time.format('%H:%M'))
.tickSize(5);
var boxNoBarWidth = (svgWidth + widthPad)/(dataPassed.length + 8);
}
else if (dataPassed.length > 5) {
var xAxis = d3.svg.axis()
.scale(xScale)
.orient('bottom')
.ticks(d3.time.minutes, 30)
.tickFormat(d3.time.format('%H:%M'))
.tickSize(5);
var boxNoBarWidth = (svgWidth + widthPad)/(dataPassed.length + 10);
}
我也想调整酒吧的宽度和位置的酒吧中心滴答。有没有什么办法可以在时间范围内通过代码动态实现这一点。
http://www.d3noob.org/2014/02/making-bar-chart-in-d3js.html,本教程只是使用顺序轴。
[更新]:首先,非常感谢您的帮助。至于调整幅度,下面是链接到我的图表的截图:
http://imgur.com/mkvnltx,TijKM8B#0,http://imgur.com/mkvnltx,TijKM8B#1
希望给什么,我通过线条的宽度是指一些想法。如果不清楚,请告诉我。
As Lars建议我尝试了序数轴,jsfiddle的相同在这里:http://jsfiddle.net/hpjqt1dL/28/。如果你在那里观察到的话,tickvalues就是数据中的精确值,如.9:06,10.45,11.06。我希望刻度值能够定期正确排列。
这听起来像你真的想要一个序号的规模。您还没有说过要如何调整条宽。 –