2015-08-26 194 views
0

我想创建一个带时间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#0http://imgur.com/mkvnltx,TijKM8B#1

希望给什么,我通过线条的宽度是指一些想法。如果不清楚,请告诉我。

As Lars建议我尝试了序数轴,jsfiddle的相同在这里:http://jsfiddle.net/hpjqt1dL/28/。如果你在那里观察到的话,tickvalues就是数据中的精确值,如.9:06,10.45,11.06。我希望刻度值能够定期正确排列。

+0

这听起来像你真的想要一个序号的规模。您还没有说过要如何调整条宽。 –

回答

0

.ticks()不带函数参数,但在你的情况下你不需要它,因为你没有引用任何绑定到任何元素的动态数据。所有你需要的是

.ticks(dataPassed.length > 5 ? (d3.time.minutes, 30) : (d3.time.minutes, 10)) 

完整的演示here

+0

谢谢拉尔斯的回复,请你检查一下我更新的问题,并帮助...请...... – user2186239