奇怪的轴行为

时间:2017-03-05 11:47:49

标签: d3.js topojson

我有一张中国的彩色编码地图,直到我在地图右边添加了一个色标和一个轴,它才能正常工作。你可以在这里查看:

https://bl.ocks.org/diggetybo/4c42aafc20c21e416585c9e37079eda2

问题是,在添加轴后,一个省失踪了。缺少,我的意思是它不再可见。我不确定它是否确实存在,但是没有填充,或者由于某种原因,路径没有被完全绘制出来。它在中国西北部也是一个非常大的省份。对于地理上的核心,该省的名称是新疆。

起初我确信这是我的用户错误,但经过很多工作后我慢慢开始怀疑它可能是某种类型的错误。我确实设法将其缩小到哪一行:第69行,或下面代码段中的.call(axis);行:

var axisNodes = svg.append('g')
    .attr('transform', 'translate(' + (margins.left+865) + ',' + (margins.top) + ')')
    .call(axis);
styleAxisNodes(axisNodes);

我确实注释掉了所有其他行,只有.call(axis);行使该省消失。你可以尝试自己,只需注释第69行,该省将重新出现。

我的问题:轴与我的代码的完全不同的部分有什么关系,json解析的地图路径的填充?为什么影响该省?我该怎么做才能避免这种情况?

谢谢

1 个答案:

答案 0 :(得分:3)

d3.json功能中执行此操作时:

svg.selectAll("path")

实际上,您正在选择一条已存在的路径,即路径的路径,并将数据绑定到该路径。

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

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

svg.selectAll("foo")

以下是您更新的bl.ocks:@Yoshi

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

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