d3.js中的geochart

时间:2012-09-28 22:11:19

标签: javascript d3.js

我正在寻找一些指导或示例如何在d3.js中执行geochart。 我需要在谷歌图表中使用类似this one的内容,然后转向d3.js,因为我需要一些自定义。到目前为止,我找到的最接近的d3.js样本是this,但代码很长,我希望找到更简单的东西。

2 个答案:

答案 0 :(得分:8)

您在寻找合唱地图吗?这是一个recent example in 28 lines of code

此示例使用默认投影d3.geo.albersUsa,这是美国的综合投影,包括阿拉斯加,夏威夷和波多黎各。如果要更改可见区域,可能还需要更改投影; d3.geo.albers适用于等值区域地图,因为它是等面积的。通过相册投影,您可以设置origin,以便您可以专注于全局的特定部分,并且所有投影都允许您指定scaletranslate以在屏幕上定位地图

如果您想要显示世界地图,我还会看一下extended projections plugin的持续发展。这会添加许多有用的地图投影,尤其是世界地图,例如Winkel Tripel。 D3的下一个版本还将包括一些令人兴奋的新功能,例如任何投影的三维旋转(包括antemeridian切割;尝试dragging this example),adaptive resampling和改进剪裁。

至于着色等值线,当然可以通过重新定义“填充”样式作为数据函数来为地理特征着色。

答案 1 :(得分:2)

对@mbostock和他的答案充分尊重,我想我会为遇到这个问题的人添加一些额外的资源。

@Yaron Naveh提供的链接中的示例似乎是Mercator projection。您可以在d3.js API中找到有关d3.js'Mercator投影设施的更多信息。 @mbostock也非常友好地为API中的每个投影创建块/要点(单击示例的投影缩略图图像)。以下是简单墨卡托投影的链接block / gist

关于“要求的艺术 - 你感觉如何?”链接,这里有一个小代码,可以使用@mbostock所说的关于使用填充样式作为数据函数进行着色的内容。在这个例子中,我只是在JSON文件中为国家名称的第一个字符选择unicode值,并使用“steelblue”(#4682B4 = 4620980)作为一种种子从该值制作CSS颜色(您可能会想要计算阴影/色调。)

d3.json("readme.json", function(collection) {
  d3.select("svg").selectAll("path")
      .data(collection.features)
    .enter().append("path")
      .attr("d", d3.geo.path().projection(d3.geo.mercator()))
      .style("fill", function(d) { return '#'+Math.floor(d.properties.name.charCodeAt(0)/100*4620980).toString(16); });
});

您可以在此处查看完整示例block / gist

(@ mbostock - 感谢您使用这么棒的工具!)