Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript d3js时间轴动态标记持续时间设置_Javascript_Jquery_D3.js - Fatal编程技术网

Javascript d3js时间轴动态标记持续时间设置

Javascript d3js时间轴动态标记持续时间设置,javascript,jquery,d3.js,Javascript,Jquery,D3.js,我正在尝试创建一个带有时间x轴的条形图。我在动态设置刻度值时遇到问题 .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)); }) .tickVa

我正在尝试创建一个带有时间x轴的条形图。我在动态设置刻度值时遇到问题

.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())
以上方法都不起作用。我的代码的JSIDLE链接:。我把这两个数据集放在了一起,越来越少的值。谁能帮我一下吗

提前谢谢

[更新:] 事实上,这不仅仅是我想要的两个条件。我的更新代码是:

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);
        }
我还想调整酒吧的宽度和地方勾在酒吧的中心。有没有办法在时间尺度上通过代码动态地实现这一点

,本教程使用序数轴进行此操作

[更新]:首先,非常感谢您的帮助。关于调整宽度,以下是指向我的图表截图的链接:

,

希望这能让你对我所说的酒吧宽度有所了解。如果不清楚,请告诉我

正如Lars所建议的,我尝试了序数轴,相同的jsfiddle在这里:。如果您观察到这些值,则它们是数据中的精确值,如..9:06、10.45、11.06。我希望勾号值以固定的间隔正确排列

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

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

完成演示。

谢谢Lars的回复,请检查我的更新问题和帮助。。。拜托…听起来你真的想要一个序数刻度。您还没有说明要如何调整条的宽度。