Javascript D3JS条形图:如何允许重复的x轴标签值?

Javascript D3JS条形图:如何允许重复的x轴标签值?,javascript,d3.js,bar-chart,Javascript,D3.js,Bar Chart,是JSFIDLE吗 请查看函数drawerchart() 注意:在我的示例中,当扩展数据值被重命名并使其唯一时,会显示所有4个条,但当值相同时会忽略,我知道这是预期行为,但我必须允许重复值。请帮助 代码: 可以通过不使用x轴的比例来实现这一点。标度的目的是将输入值映射到输出,即相同的输入将提供相同的输出。考虑到在这种情况下这不是你想要的,你不需要秤 可以根据数据中的索引计算每个条的位置: .attr("x", function(d, i) { return i * width/dataA

是JSFIDLE吗

请查看函数
drawerchart()

注意:在我的示例中,当扩展数据值被重命名并使其唯一时,会显示所有4个条,但当值相同时会忽略,我知道这是预期行为,但我必须允许重复值。请帮助

代码:


可以通过不使用x轴的比例来实现这一点。标度的目的是将输入值映射到输出,即相同的输入将提供相同的输出。考虑到在这种情况下这不是你想要的,你不需要秤

可以根据数据中的索引计算每个条的位置:

.attr("x", function(d, i) {
    return i * width/dataArray.length;
})

每个条的宽度可以用类似的方式计算。文本标签也是如此,您必须手动添加。完成JSFIDLE。

必须在比例上使用唯一值,因为它将“映射”这些值。尽管如此,我们仍将修改刻度上的文本,并使您的图形显示为具有重复值

在x比例定义(变量x=…)上方添加以下内容:


它所做的是使用唯一的值创建一个刻度,但替换刻度上的文本,使其看起来使用了重复的值。

太好了!!非常感谢您的回答,但是现在第一个条与y轴重叠,并且x轴勾号也被删除,我们将非常感谢您的进一步帮助:)您可以通过调整x位置来移动条,如上所述。您还必须手动绘制记号,即在适当的位置生成线段。感谢您的帮助:)尽管我成功地移动了第一个条。我仍然无法绘制x轴和x轴记号。所以我现在不带他们去,稍后再试。。
.attr("x", function(d, i) {
    return i * width/dataArray.length;
})
// Rewrite xData and prepend index -> xData: "Repeat0"
dataArray = dataArray.map(function(d,i){d.xData = d.xData +i; return d});

// Remove the index from the ticks ->  xData: "Repeat0" -> "Repeat"
var adjustTicks = function(){
   var xaxisgroup = this.node();
   var ticks = xaxisgroup.children;
   for (var i = 0; i < ticks.length; i++) {
       if(ticks[i].localName == 'path'){continue; }

       var tick_text = d3.select(ticks[i].children[1]);
       tick_text.text(tick_text.text().substring(0, tick_text.text().length - 1))

   };
}
svg.append("g").attr("class", "x axis").attr("transform",
        "translate(0," + height + ")").call(xAxis).call(adjustTicks);