D3.js 奇异轴行为

D3.js 奇异轴行为,d3.js,topojson,D3.js,Topojson,我有一张中国的彩色地图,在我在地图的右边添加了一个色标和一个轴之前,它工作得很好。您可以在此处查看: 问题是,在我添加轴后,一个省丢失了。我所说的失踪,是指它不再可见。我不确定它是否仍然在那里,但没有填充,或者由于某种原因,路径没有完全绘制出来。它也是中国西北部的一个大省。对于那些地理上的中坚分子来说,这个省的名字是新疆 起初,我确信这是我自己的用户错误,但经过很多努力,我慢慢开始怀疑这可能是某种错误。我确实设法把它缩小到哪一行:第69行,或者.call(axis)下面代码段中的行: var

我有一张中国的彩色地图,在我在地图的右边添加了一个色标和一个轴之前,它工作得很好。您可以在此处查看:

问题是,在我添加轴后,一个省丢失了。我所说的失踪,是指它不再可见。我不确定它是否仍然在那里,但没有填充,或者由于某种原因,路径没有完全绘制出来。它也是中国西北部的一个大省。对于那些地理上的中坚分子来说,这个省的名字是新疆

起初,我确信这是我自己的用户错误,但经过很多努力,我慢慢开始怀疑这可能是某种错误。我确实设法把它缩小到哪一行:第69行,或者
.call(axis)下面代码段中的行:

var axisNodes = svg.append('g')
    .attr('transform', 'translate(' + (margins.left+865) + ',' + (margins.top) + ')')
    .call(axis);
styleAxisNodes(axisNodes);
我每隔一行就注释掉一行,只有
.call(axis)行使省消失。你可以自己试试,只要把第69行注释掉,省就会重新出现

我的问题:axis与我的代码中完全不同的部分,即json解析映射路径的填充有什么关系?为什么它只影响那个省?我能做些什么来避免这种情况


感谢您在
d3.json
函数中执行此操作:

svg.selectAll("path")
实际上,您正在选择一个已经存在的路径,即轴的路径,并将数据绑定到该路径

因此,您的“输入”选择将少一个元素

解决方案:选择不存在的内容:

svg.selectAll("foo")
这是您更新的bl.ocks:

PS:另一种解决方案是在绘制地图后调用轴

PPS:“为什么它只影响该省?”该省是数据中的第一个省