我创建了这个jsbin http://jsbin.com/ibewux/3/edit以显示转换时的奇怪行为。
初始化图表时,它会正确显示数据(请参阅下表)。
如果我尝试通过下拉菜单更改图表类型,则会交换某些系列;在这之后,系列不再被交换。
如果单击updateChartData按钮,也会发生同样的事情;第一次它将交换系列与表中显示的数据进行比较。
因此,似乎只有初始化后的第一次转换才会受到这种不必要的交换。
这是一段很短的代码,并想知道你是否能发现这种情况发生的原因。
由于
答案 0 :(得分:2)
当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); })
我认为你应该将一个字符串从域传递到这里的比例,以避免你看到的奇怪行为。
目前只有工作,因为如果您将密钥传递给之前未曾见过的序数比例,它会将其添加到域中。
可能还有其他问题,但希望能让你更接近。