【发布时间】:2015-02-24 15:18:25
【问题描述】:
我正在尝试创建一个随着新值进入而更新的图表。为了使 X 轴上的标签可读,我决定稍微旋转它们,这样它们就不会重叠。
当有一个新值时,它被绘制在图表中,然后路径(实际上是容器)在转换中向左平移。
这就是我创建旋转轴标签的方式:
svg.select(".x.axis")
.call(this.xAxis)
.selectAll("text")
.style("text-anchor", "end")
.attr("dx", "-.8em")
.attr("dy", ".15em")
.attr("transform", this.axislabelrotation);
this.axislabelrotation 是:
function(d) {
return "rotate(-35)"
}
这就是我转换 X 轴的方式:
svg = svg.transition().duration(750);
svg.select(".x.axis") // change the x axis
.call(this.xAxis)
.selectAll("text")
.style("text-anchor", "end")
.attr("dx", "-.8em")
.attr("dy", ".15em")
.attr("transform", this.axislabelrotation);
虽然现在我有两个问题:
- 在过渡开始时,X 轴标签会向下跳几个像素,在过渡期间它们会向上跳。
- 新输入的标签(示例中为“2015”)在过渡开始时不会旋转,但会在过渡期间旋转到所需的状态。
【问题讨论】:
-
嗯,问题是 D3 轴不旋转标签。您可以尝试自定义补间,在每个步骤中旋转标签。
-
... 或者复制+粘贴并修改
d3.svg.axis()源代码以创建您自己的自定义轴。
标签: d3.js transition axis-labels