在d3.js中隐藏特定范围下的轴刻度值

在d3.js中隐藏特定范围下的轴刻度值,d3.js,data-visualization,D3.js,Data Visualization,我正在寻找一种隐藏在D3.js中某个值范围内的轴刻度值的方法。例如,假设y轴显示从0到100的值,每20个值(0、20、40、60、80、100)显示一次。现在,如何隐藏某些刻度值以防显示?因此,如果我想隐藏值60和80,轴将只显示0、20、40和100 让我解释一下为什么会出现这个问题。我之前问过另一个问题,如何创建一个断裂的y轴。我得到的答案是在y轴的范围和域中添加中点,这确实有效。但是,当添加中点而不显式指定记号值时,该中点会变得一团糟,因为所有隐藏的记号值现在都显示在同一位置 下面是它的

我正在寻找一种隐藏在D3.js中某个值范围内的轴刻度值的方法。例如,假设y轴显示从0到100的值,每20个值(0、20、40、60、80、100)显示一次。现在,如何隐藏某些刻度值以防显示?因此,如果我想隐藏值60和80,轴将只显示0、20、40和100

让我解释一下为什么会出现这个问题。我之前问过另一个问题,如何创建一个断裂的y轴。我得到的答案是在y轴的范围和域中添加中点,这确实有效。但是,当添加中点而不显式指定记号值时,该中点会变得一团糟,因为所有隐藏的记号值现在都显示在同一位置

下面是它的屏幕截图:


解决此问题的方法是隐藏位于该中点的某个值范围内的刻度值。在C3.js中有一个类似的but

我从这个问题的一个答案中找到了答案

有一种方法可以删除不必要的勾号值:

g.selectAll(".tick")
.each(function (d, i) {
    if ( d > value1 && d < value2 ) {
        this.remove();
    }
});
g.selectAll(“.tick”)
.每个(功能(d,i){
如果(d>value1&&d
我是你链接的问题的作者。我不太喜欢的是它不是真正的动态。如何计算
value1
value2

我想建议的方法是真正动态的,它使用
scale.invert
来获取刻度,只需使用范围

让我们看看。这是一个简单的断轴,刻度堆积在一起:

var w=560,
h=100;
var svg=d3.选择(“主体”)
.append(“svg”)
.attr(“宽度”,w+40)
.attr(“高度”,h)
.附加(“g”)
.attr(“转换”、“翻译(10,0)”);
var scale=d3.scaleLinear()
.domain([0,208001000])
.范围([0,w/2,w/2,w]);
var axis=d3.axisBottom(scale)(svg.append(“g”).attr(“transform”,“translate(0,50)”))

谢谢你,杰拉尔多!这确实是一个很好的解决办法。在我的例子中,动态计算value1和value2并不困难,因为其中一个是较低条的最大值,第二个是较高条的最小值。