繁体   English   中英

d3 y轴标签位置

[英]d3 y axis label position

我有一个分组的条形图设计,每个条形图的数量紧接在条形上方,而不是最左侧的y轴条形图。

我添加了这样的文字...

svg.selectAll(".text")
.data(data)
.enter()
.append("text")
.attr("class","label")
  .attr("x", function(d) { return x1(d.rate) })
  //.attr("y", function(d) { return y(d.value) + 1; })
.attr("dy", ".75em")
.text(function(d) {return d.value; });

但是我似乎无法根据条形图位置获得x和y值,并且未插入d.value的实际文本。

此处的示例: https : //jsfiddle.net/6p7hmef1/7/

这是因为绑定到您要添加的文本的数据不正确。

如果按如下所示添加console.log,您将能够查看为什么未插入标签。 在控制台中检查输出。 控制台日志小提琴

.text(function(d) {console.log(d); return d.value; });

一种方法是将文本附加到栏组(在您的情况下为“切片”)。 就像您为酒吧所做的一样。 这是一个小提琴: JS Fiddle Demo

    slice.selectAll(".text")
    .data(function(d) { return d.values; })
    .enter()
    .append("text")
    .attr("class","label");
  slice.selectAll('text.label')
    .attr("x", function(d) { return x1(d.rate)+ x1.rangeBand()/3 })
    .attr("y", function(d) { return y(d.value) + 1; }).attr('dy', '-0.4em')
    .text(function(d) {return d.value; });

这可能看起来很奇怪,因为在过渡栏之前显示了文本。 因此,在显示条形之后更改文本的值似乎对我来说是正确的方法。 (可以根据要求调整dx和dy属性)

这是最后的小提琴JS FIDDLE

我在每次转换时都使用“结束”回调,并相应地更改了文本值。

.each('end', function () {
    d3.select(this.parentNode).selectAll('text.label')
        .attr("x", function(d) { return x1(d.rate)+ x1.rangeBand()/3 })
        .attr("y", function(d) { return y(d.value) + 1; }).attr('dy', '-0.4em')
        .text(function(d) {return d.value; });
})

希望这可以帮助。 :)让我知道代码的任何部分是否无法理解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM