Javascript 如何从零开始轴标签?

Javascript 如何从零开始轴标签?,javascript,d3.js,Javascript,D3.js,我正在尝试使用d3.js绘制带有标签的x轴,我有一个1950-2015年的数据数组,我打算从0年开始在x轴上绘制它们,但我的代码输出的x轴从数组的最小值开始,如果用0作为最小值编辑数组,那么x轴标签会改变。有没有关于iam哪里出错的提示 我的代码输出:1950…1955…1960 包含第0年时的输出,这不是我想要的: 0…200…400…2015年 我打算输出的内容:0…1950…1955 $.getJSON( "https://raw.githubusercontent.com/FreeCo

我正在尝试使用d3.js绘制带有标签的x轴,我有一个1950-2015年的数据数组,我打算从0年开始在x轴上绘制它们,但我的代码输出的x轴从数组的最小值开始,如果用0作为最小值编辑数组,那么x轴标签会改变。有没有关于iam哪里出错的提示

我的代码输出:1950…1955…1960

包含第0年时的输出,这不是我想要的: 0…200…400…2015年

我打算输出的内容:0…1950…1955

$.getJSON(
"https://raw.githubusercontent.com/FreeCodeCamp/ProjectReferenceData/master/GDP-data.json",
功能(x){
var rawData=x.data;
var yearData=[];
var-gdpData=[];
var宽度=1020;
var高度=100;
对于(var i=0;i
根据您的评论,您需要的是
比例,而不是
线性
比例,并在数组中包含
0

您可以将
年份
数组直接用作
,然后点刻度将默认使用这些值作为
滴答值

$.getJSON(
"https://raw.githubusercontent.com/FreeCodeCamp/ProjectReferenceData/master/GDP-data.json",
功能(x){
var rawData=x.data;
var yearData=[];
var-gdpData=[];
var宽度=1020;
var高度=100;
对于(var i=0;i


是否要按比例缩放?因为如果你有一个0到2015年的范围,你列表中的那些年份在右边会非常狭窄。或者你想要它在中间“跳过一点”吗?轴应该从0开始,下一个值应该是19501955,…2015,等等…0…1950…1955…1960……2015。有没有一种方法可以直接从数组值中直接标记蜱虫?只是看到你的编辑到你的评论。所以你不想要任何规模?例如,1990年和2000年之间的空间应与2000年和2005年之间的空间相同?是的,我不希望值缩放。当您只想标记数组中的值时,值确实有用,但正如您在输出中所看到的,添加0会使轴向上倾斜,如果删除0,效果很好OK,现在我知道你在找什么了,我已经更新了答案-应该做你需要做的事我刚刚意识到,使用点标度,你甚至不需要显式设置
滴答值
,所以我相应地更新了答案
   $.getJSON(
      "https://raw.githubusercontent.com/FreeCodeCamp/ProjectReferenceData/master/GDP-data.json",
      function(x) {
        var rawData = x.data;
        var yearData = [];
        var gdpData = [];
        var width = 1020;
        var height = 100;
        for (var i = 0; i < rawData.length; i++) {
          yearData.push(rawData[0][0]);
          gdpData.push(rawData[1][1]);
        }

        //values which should be labeled on x-axis
        var years = [
          1950,
          1955,
          1960,
          1965,
          1970,
          1980,
          1985,
          1990,
          2000,
          2005,
          2010,
          2015
        ];
        var svg = d3
        .select("body")
        .append("svg")
        .attr("width", width)
        .attr("height", height)
        .append('g');


        var x_domain = d3.extent(years, function(d) {
          return d;
        });

        var xscale = d3
        .scaleLinear()
        .domain(x_domain)
        .nice()
        .range([20, 600]);

        var x_axis = d3
        .axisBottom()
        .scale(xscale)
        .ticks(11);

        svg
          .append("g")
          .call(x_axis);

      }
    );