Javascript D3-仅显示轴上的中间和最后一个记号
我创建了一个折线图,我只想显示中间的记号和最后一个记号。现在,我使用.tickFormat自动生成标签的记号和数据(如果可能的话,我更喜欢使用这个数据,因为它生成的是四舍五入的数字)。下面的代码最初工作正常,但一旦数据发生变化(每周都会发生变化),我猜记号的数量会发生变化,从而导致它显示不同的记号。我在3个不同的折线图上使用了相同的代码(除了使用不同的数据集外,所有代码都是相同的),并且每个折线图的刻度显示都不同 最好的办法是,如果我能计算出函数生成了多少记号,然后根据这些记号显示什么记号。不过,我不确定这是否可行。如果没有,我有没有办法做到这一点 注意:records是包含x轴值的数组。它的长度总是5Javascript D3-仅显示轴上的中间和最后一个记号,javascript,d3.js,Javascript,D3.js,我创建了一个折线图,我只想显示中间的记号和最后一个记号。现在,我使用.tickFormat自动生成标签的记号和数据(如果可能的话,我更喜欢使用这个数据,因为它生成的是四舍五入的数字)。下面的代码最初工作正常,但一旦数据发生变化(每周都会发生变化),我猜记号的数量会发生变化,从而导致它显示不同的记号。我在3个不同的折线图上使用了相同的代码(除了使用不同的数据集外,所有代码都是相同的),并且每个折线图的刻度显示都不同 最好的办法是,如果我能计算出函数生成了多少记号,然后根据这些记号显示什么记号。不过
var yAxis = d3.svg.axis()
.scale(y)
.orient("left")
.tickSize(0)
.tickFormat(function(d, i, test) {
var rounded = (Math.round((d / 1000000) * 10) / 10).toFixed(1);
return i == records.length + 1 || (rounded == min || rounded == (parseFloat(min) + 0.1)) ? rounded + "M" : "";
});
谢谢 所以,在拉尔斯的指导下,这就是我最后所做的工作:
var yAxisTicks = records;
yAxisTicks[yAxisTicks.length - 1] = d3.max(records) + 1000;
var yAxis = d3.svg.axis()
.tickValues(yAxisTicks)
.scale(y)
.orient("left")
.tickSize(0)
.tickFormat(function(d, i){
var rounded = (Math.round((d/10000) * 10) / 10).toFixed(1);
return i == 0 || i == 4 ? rounded + "M": "";
});
最终,我通过一个数组,所有y轴值到.TikValk,然后使用。TigkFrad只显示第一个和最后一个(作为第一个结束显示在中间,正如第一个数据点显示的那样)
你可能想要<代码> .TikValues()/Toe>来设置要显示的刻度值。这就是我学习的方式,但我不认为我完全理解。滴答声的价值观是如何运作的。我该怎么做呢?我是否设置了要在其中显示的两个值?是的,您传递了要在参数中显示为列表的勾号值。看见