【发布时间】:2017-04-14 18:19:33
【问题描述】:
我有一个带有长刻度名称的 x 轴,我想提供它们的缩写作为刻度值。长刻度名称用于设置域。
axisElement = d3.axisBottom(scale)
.tickValues(tickValues); // these are long names when axis is first drawn
chart.append("g")
.attr("class", "bottomAxis")
.attr("transform", "translate(0, " + height + ")")
.call(axisElement);
我首先使用看起来像this 的适当长名称绘制轴,然后尝试使用 D3 中的axis.tickValues() 函数更新刻度。
updateTicks(tickValues) {
chart.select(".bottomAxis").call(this.axisElement.tickValues(tickValues));
}
但是当 D3 绘制刻度时,它使用了旧的标度域值(即长名称)并弄乱了缩写名称的定位。它看起来像this。我还收到以下错误:
Error: <g> attribute transform: Expected number, "translate(NaN,0)".
我相信,它是说它试图根据旧的域值翻译刻度,但找到了缩写值,因此无法翻译。
我尝试将秤的域更改为缩写名称,然后 D3 将它们适当地定位。
我的问题是,是否可以在不更改域值的情况下更改 tickValues?
【问题讨论】:
-
你为什么不从缩写开始呢?为什么要先设置长名称再更新?
-
我需要具有长名称的域比例尺用于同一图形中的其他图表。它是我正在构建的图表库的一部分,其他组件需要长名称。谢谢。
标签: d3.js