D3.js .ticks()需要什么条件才能工作?

D3.js .ticks()需要什么条件才能工作?,d3.js,D3.js,.ticks()似乎不适用于我的条形图。谁能看一下吗 。我在靠近对象起点的x轴上设置了记号: xAxis = d3.svg.axis().scale(xScale).orient("bottom").ticks(3), 刻度只能取2,5,10的倍数,不能取任何数字。这就是你可能有问题的原因。请看一下这个答案,了解定制的记号。我没有足够的声誉在第一篇文章中添加评论,但我认为这是一个误解 轴上的标签必须是2、5或10的倍数。ticks函数可以接受任何数字,但它将修改该数字以确保轴是2、5或10的倍

.ticks()似乎不适用于我的条形图。谁能看一下吗

。我在靠近对象起点的x轴上设置了记号:

xAxis = d3.svg.axis().scale(xScale).orient("bottom").ticks(3),

刻度只能取2,5,10的倍数,不能取任何数字。这就是你可能有问题的原因。请看一下这个答案,了解定制的记号。

我没有足够的声誉在第一篇文章中添加评论,但我认为这是一个误解

轴上的标签必须是2、5或10的倍数。ticks函数可以接受任何数字,但它将修改该数字以确保轴是2、5或10的倍数

例如,如果域为0-100,而您需要4个刻度(0、33.33、66.66100),则它将取整为6,以给出“漂亮”的数字(0、20、40、60、80、100)。但是,如果您将ticks设置为3,它将遵守该规则,并且您将有0、50和100

这是一篇关于迈克对这种行为的解释的帖子

我仍然不清楚,如果将刻度设置为5,为什么它不会计数为0、25、50、75、100,但我想我会尝试至少消除一些混淆。

您可以使用过滤器来决定显示哪些刻度:

var xAxis = d3.svg.axis()
    .scale(x)
    .tickValues(x.domain().filter(function(d, idx) { return idx%2==0 }))
    .orient("bottom");

上面剪下的部分来自。

css实现这一点的方法是隐藏不需要的第n轴元素。对我来说,d3滴答声永远令人讨厌

.tick:nth-of-type(6) > text {
    display: none;
  }
  .tick:nth-of-type(7) > text {
    display: none;
  }
  .tick:nth-of-type(8) > text {
    display: none;
  }

犯错误你能对“不工作”的含义进行一点扩展吗?小提琴看起来在x轴上有记号。我在x轴上将
ticks()
设置为3,但默认值(在本例中,每个类别一个记号)优先。我在某个地方读到d3仍然是“猜测”,即使您明确指定了刻度的数量。但是,我仍然希望在指定一个低至3的数字后,它会选择一个小于12的数字(这是本例中的最大值)。正如文档中所说的,不,它不只是接受您指定的数字。但是,您可以使用
tickValues()
函数明确指定记号标记。
tickValues
对我不起作用,因为类别可以更改。感谢您指出这一点,我忘记了。事实上,我在一月份就评论过这篇文章,内容似乎是同一类型的问题:一个包含24个类别的条形图,每小时一个。不幸的是,
.ticks(5)
对我来说也不起作用。五年后,在这里使用同样的技术真是太奇怪了:)我喜欢它!非常简单和聪明