D3 tickSizeOuter(0)删除末端标记不起作用

时间:2019-03-11 14:28:11

标签: d3.js

我正在按照示例here删除条形图中的末端刻度,如下所示:

var yAxis = d3.axisLeft(yScale); 
yAxis.tickValues([0, 500, 1000, 1500, 2000, 2500]); 
yAxis.tickSizeOuter(0); // <--- This does not remove the end ticks

但是,这不会删除y轴上的结束标记。

现在,当我输入以下代码行时:

yAxis.tickSize(0);

我能够删除y轴上的所有刻度。

为什么tickSizeOuter(0)代码无法正常工作,我如何只删除结束标记?

这是我在Angular项目中使用的d3版本:

"d3": "^5.9.1"

2 个答案:

答案 0 :(得分:0)

yAxis.tickSizeOuter(0)删除外部刻度线,这意味着y线是直线,但不会删除实际的刻度线(例如0-)。如果您要使用什么,则应使用类似以下内容:

  const tick_count = d3.selectAll("g.axis.axis--y .tick").size();
  d3.selectAll("g.axis.axis--y .tick")
    .each(function (d, i) {
      console.log(d,i)
      if ( i == 0 || i == tick_count-1) {
        this.remove();
      }
    });

希望我能正确理解您的误解:)

答案 1 :(得分:0)

D3 v5.9.2的工作解决方案:

  1. 声明state_dict = torch.load(args.model) 并设置属性后,将其包装在yAxis中并调用

    g
  2. 从组中删除第一个var yAxis = d3.axisLeft(yScale); yAxis.tickValues([0, 500, 1000, 1500, 2000, 2500]); svg.append("g").attr("id", "yAxisG").call(yAxis); 元素:

    <path>