Javascript 如何在d3.js中显示选定的勾号标签

Javascript 如何在d3.js中显示选定的勾号标签,javascript,d3.js,scale,Javascript,D3.js,Scale,我正在使用d3库创建甘特图。到目前为止,我已经做了一些类似于此图的事情: 但是,正如您所注意到的,在小时轴上,最左侧和最右侧的12AM标签已用完。所以,我想知道是否有办法从凌晨2点开始计时,到晚上10点结束 我这样定义小时轴: x1HourAxis .ticks(d3.time.hours, 2) .tickFormat(d3.time.format('%I %p')); 我想保持这种配置,但正如我所说,我想从凌晨2点开始,然后是凌晨4点。。。直到上午10点,这样我就不会

我正在使用d3库创建甘特图。到目前为止,我已经做了一些类似于此图的事情:

但是,正如您所注意到的,在小时轴上,最左侧和最右侧的12AM标签已用完。所以,我想知道是否有办法从凌晨2点开始计时,到晚上10点结束

我这样定义小时轴:

  x1HourAxis
    .ticks(d3.time.hours, 2)
    .tickFormat(d3.time.format('%I %p'));

我想保持这种配置,但正如我所说,我想从凌晨2点开始,然后是凌晨4点。。。直到上午10点,这样我就不会在图表上产生这种不良的视觉效果。一个选项是显式设置要显示的刻度值。您可以使用axis.tickValues([values])


在您的特定情况下,轴是
x1HourAxis
,我认为
值是
[2,4,6,8,10,12,14,16,18,20,22]
,但您可能需要将它们作为时间值(例如下午2:00)或ms值。我没有尝试显式地设置时间刻度的值,所以我不完全确定约定是什么。

您有更多的代码吗?很难说到底发生了什么,但你可以试试:

x1HourAxis
.ticks(d3.time.hours, 2)
.tickFormat(d3.time.format('%I %p'))
.tickSize(some value here for major tick size, some value here for minor tick size, 0);
将axis.tickSize()中的最后一个参数设置为0将抑制结束标记


请参阅:

不确定您是否可以在时间尺度上这样做,我认为它只适用于定量尺度;我会给它一个goaxis.tickValues适用于定量刻度,但不适用于时间刻度。将勾号大小设置为零也会成功抑制勾号标签吗?