D3.js 如何删除d3中的第一个勾号

D3.js 如何删除d3中的第一个勾号,d3.js,D3.js,我正在用d3画一张图 let y = scaleLinear().rangeRound([height, 0]); let y_axis = axisLeft(y); g.append("g").attr("transform", "translate(transltion," + height + ")") .call(axisRight(y).ticks(tick)) .attr("transform", "translate(" + yLeftTrasltion+ "," +

我正在用d3画一张图

let y = scaleLinear().rangeRound([height, 0]);
let y_axis = axisLeft(y);

g.append("g").attr("transform", "translate(transltion," + height + ")")
   .call(axisRight(y).ticks(tick))
   .attr("transform", "translate(" + yLeftTrasltion+ "," + yBotmrasltion + ")");

这是图0,10,20,30,40,50。现在,我希望它不显示0。如何实现这一点?

要删除
0
,第一个勾号有两个选项:

  • 在axis元素上调用
    .tickValues()
    ,并将要显示的值数组传递给它。因此,在没有
    0
    的情况下,它将是
    [10,20,30,40,50]
    。这样,将不再在轴上渲染0。完整示例如下所示:
  • axisRight(y).tick值([10,20,30,40,50])

  • 更多手动选项是运行选择并手动删除它。假设axis有一个类
    。axis
    。您可以运行d3 select手动删除第一个勾号。但要注意,选项1要更好、更干净。手动移除将如下所示:
  • d3.选择('.axis.tick:first child')。删除()

    使用“填充不透明度”

    .style('fill-opacity', d => d === 0 ? 0.0 : 1.0)
    
    这会有帮助的 x_轴=d3.axisBottom() .scale(xscale).ticksizeout([40]).tickSizeInner([0])

    您可以使用CSS:

    .tick:first-of-type line{
        fill: none;
        stroke: none;
    }
    

    在我的例子中,我使用的是“.call(axisRight(y).ticks(tick))”。在这里,我已经确定了滴答声的数量是5。但是间隔会不同,比如[10,20,30,40,50]或[100200300400500],它可以是任何东西。在这种情况下,使用上面描述的选项2@rajeevtejapuriyai可能是有意义的。我没有为轴使用任何类。只要你有某种方法来识别包含轴的元素,这并不重要。否则,添加一个类
    .attr('class','axis')
    ,这可能是使用任意一种方式的最佳实践选项1:
    d3.selectAll(.tick”).filter(函数(d){return d==0;})。remove()选项2:
    .call(axisRight(y).ticks(tick).tickFormat(函数(d){if(d)返回d}))
    选项3:
    d3.选择(“.tick”).remove()