D3.js 当d3js中存在数据重叠时,如何在x轴上显示标签?

D3.js 当d3js中存在数据重叠时,如何在x轴上显示标签?,d3.js,D3.js,我有一个函数,绘制一个堆叠的条形图。但是,x轴标签重叠,无法读取。如何解决此问题? 如果有太多的数据,我会很高兴能显示更少的刻度和标签。 您可以访问以下位置的项目: 代码可在以下位置访问: 非常感谢您的帮助。我认为在较小的svg中显示所有的值并不好。你需要在这里做出决定。我可以给你两个建议: 您可以创建可滚动的svg和显示 或者不显示图例上显示的x轴值 但是,如果您仍然希望显示,您可以创建自己的自定义逻辑,如下所示: 可以在x轴上使用“勾选值”钩子,并选择要显示的值。在我的例子中,我想显示5个

我有一个函数,绘制一个堆叠的条形图。但是,x轴标签重叠,无法读取。如何解决此问题? 如果有太多的数据,我会很高兴能显示更少的刻度和标签。 您可以访问以下位置的项目:

代码可在以下位置访问:


非常感谢您的帮助。

我认为在较小的svg中显示所有的值并不好。你需要在这里做出决定。我可以给你两个建议:

  • 您可以创建可滚动的svg和显示
  • 或者不显示图例上显示的x轴值
  • 但是,如果您仍然希望显示,您可以创建自己的自定义逻辑,如下所示:

    可以在x轴上使用“勾选值”钩子,并选择要显示的值。在我的例子中,我想显示5个刻度

    g.append("g")
                      .attr("class", "axis")
                      .attr("transform", "translate(0," + height + ")")
                      .transition()
                      .duration(1000)
                      .call(d3.axisBottom(x).tickValues(x.domain().filter((d, i) => { 
                        const value = Math.floor(data.length/5)
                        return i % value === 0;})))
                      .selectAll("text")    
                        .style("text-anchor", "middle")
                        .attr("dx", "3em")
                        .attr("dy", "1em")
                        .attr("transform", "rotate(30)");
    

    请在-

    找到工作代码,我认为在较小的svg中显示所有值并不好。你需要在这里做出决定。我可以给你两个建议:

  • 您可以创建可滚动的svg和显示
  • 或者不显示图例上显示的x轴值
  • 但是,如果您仍然希望显示,您可以创建自己的自定义逻辑,如下所示:

    可以在x轴上使用“勾选值”钩子,并选择要显示的值。在我的例子中,我想显示5个刻度

    g.append("g")
                      .attr("class", "axis")
                      .attr("transform", "translate(0," + height + ")")
                      .transition()
                      .duration(1000)
                      .call(d3.axisBottom(x).tickValues(x.domain().filter((d, i) => { 
                        const value = Math.floor(data.length/5)
                        return i % value === 0;})))
                      .selectAll("text")    
                        .style("text-anchor", "middle")
                        .attr("dx", "3em")
                        .attr("dy", "1em")
                        .attr("transform", "rotate(30)");
    
    请在以下网址查找工作代码: