D3.js 如何删除d3中的第一个勾号
我正在用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+ "," +
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
,第一个勾号有两个选项:
.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()