Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3-仅显示轴上的中间和最后一个记号_Javascript_D3.js - Fatal编程技术网

Javascript D3-仅显示轴上的中间和最后一个记号

Javascript D3-仅显示轴上的中间和最后一个记号,javascript,d3.js,Javascript,D3.js,我创建了一个折线图,我只想显示中间的记号和最后一个记号。现在,我使用.tickFormat自动生成标签的记号和数据(如果可能的话,我更喜欢使用这个数据,因为它生成的是四舍五入的数字)。下面的代码最初工作正常,但一旦数据发生变化(每周都会发生变化),我猜记号的数量会发生变化,从而导致它显示不同的记号。我在3个不同的折线图上使用了相同的代码(除了使用不同的数据集外,所有代码都是相同的),并且每个折线图的刻度显示都不同 最好的办法是,如果我能计算出函数生成了多少记号,然后根据这些记号显示什么记号。不过

我创建了一个折线图,我只想显示中间的记号和最后一个记号。现在,我使用.tickFormat自动生成标签的记号和数据(如果可能的话,我更喜欢使用这个数据,因为它生成的是四舍五入的数字)。下面的代码最初工作正常,但一旦数据发生变化(每周都会发生变化),我猜记号的数量会发生变化,从而导致它显示不同的记号。我在3个不同的折线图上使用了相同的代码(除了使用不同的数据集外,所有代码都是相同的),并且每个折线图的刻度显示都不同

最好的办法是,如果我能计算出函数生成了多少记号,然后根据这些记号显示什么记号。不过,我不确定这是否可行。如果没有,我有没有办法做到这一点

注意:records是包含x轴值的数组。它的长度总是5

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>来设置要显示的刻度值。这就是我学习的方式,但我不认为我完全理解。滴答声的价值观是如何运作的。我该怎么做呢?我是否设置了要在其中显示的两个值?是的,您传递了要在参数中显示为列表的勾号值。看见