代码之家  ›  专栏  ›  技术社区  ›  SkyWalker

如何控制堆叠条形图中X轴标签位置的间距?

  •  -1
  • SkyWalker  · 技术社区  · 6 年前

    this this 解决。

    然后,我做如下显示我的X轴标签蜱:

    var x = d3.scaleBand().range([0, width]).padding(.1).domain(d3.range(1993, 2002));
    svg.append("g")
       .attr('class', 'axis')
       .attr('transform', 'translate(-10,' + (height - 20) + ')')
       .call(d3.axisBottom(x));
    

    enter image description here

    2 回复  |  直到 6 年前
        1
  •  1
  •   Tom Shanley    6 年前

    下面的片段显示了Rects和Acess的TIKE是如何正确排列的。

    需要注意d3.range如何生成数组,在这个d3.range(1993,2002)将创建[1993,1994。。。,2001年]。

    var width = 800
        var height = 100
        
        //this makes an array 1993 to 2001. Is that what you want?
        var data = d3.range(1993, 2002) 
         
        var x = d3.scaleBand()
        	.range([0, width])
        	.padding(.1)
        	.domain(data);
    
        var svg = d3.select("body").append("svg")
          .attr("width", width)
          .attr("height", height)
        
        svg.append("g")
           	.attr('class', 'axis')
           //.attr('transform', 'translate(-10,' + (height - 20) + ')')
        		.attr('transform', 'translate(0,' + (height - 20) + ')')
           	.call(d3.axisBottom(x));
         
        svg.selectAll('rect')
        	.data(data)
        	.enter()
        	.append('rect')
        	.attr('x', d => x(d))
        	.attr('y', 0)
        	.attr('width', x.bandwidth())
        	.attr('height', x.bandwidth())
    <script src="https://d3js.org/d3.v4.min.js"></script>
        2
  •  0
  •   Jake    6 年前

    我没有足够的S.O来“评论”,但我认为使用xScale可能会有帮助: -在XXIS(像……) .刻度(X刻度) ) “x”,d=>x刻度(年) ) (“宽度”,x.bandwidth())

    看起来像(1)轴和(2)条中的XSCOPE不能一起工作。 也许这有帮助?!