我创建了这个 jsbin http://jsbin.com/ibewux/3/edit来显示转换的奇怪行为。
当图表初始化时,它会正确显示数据(见下表)。
如果我尝试通过下拉菜单更改图表类型,则会交换一些系列;发生这种情况后,该系列不再交换。
如果您单击 updateChartData 按钮,也会发生同样的事情;第一次它将与表中显示的数据相比交换系列。
因此,似乎只有初始化后的第一次转换才会受到这种不需要的交换的影响。
这是一小段代码,想知道您是否能找出发生这种情况的原因。
谢谢
我创建了这个 jsbin http://jsbin.com/ibewux/3/edit来显示转换的奇怪行为。
当图表初始化时,它会正确显示数据(见下表)。
如果我尝试通过下拉菜单更改图表类型,则会交换一些系列;发生这种情况后,该系列不再交换。
如果您单击 updateChartData 按钮,也会发生同样的事情;第一次它将与表中显示的数据相比交换系列。
因此,似乎只有初始化后的第一次转换才会受到这种不需要的交换的影响。
这是一小段代码,想知道您是否能找出发生这种情况的原因。
谢谢
当isVerticalChart
为真时,您正在使用带域的序数比例svg.pointsNames
(这似乎是形式为 的字符串数组"Col " + i
):
x = d3.scale.ordinal().domain(svg.pointsNames);
但是,然后您继续使用具有此比例的基准索引,而不是这些字符串:
.attr("x", function(d, i) { return isVerticalChart ? x(i) : x(d.y0 - d.size); })
我认为您应该将一个字符串从域传递到此处的比例,以避免您看到的奇怪行为。
它仅在目前有效,因为如果您将密钥传递给以前从未见过的序数比例,它会将其添加到域中。
可能还有其他问题,但希望这能让你更接近。