如何为本地geojson文件绘制d3条形图



我正在为以下本地存储在myfile.geojson中的geojson数据绘制条形图、饼图和气泡图。通过堆栈溢出,我知道了如何做饼图。以它为参考,我正在尝试做条形图。我试过了,但没有得到。这是geojson文件的代码。

{
"type": "FeatureCollection",
"features": [{
    "type": "Feature",
    "properties": {
        "profit": 326,
        "npa": 174.000000
}
}, {
    "type": "Feature",
    "properties": {
        "profit": 1762,
        "npa": 1683.000000
}
}]
}

我尝试的代码是在这个plunker链接

我是d3的新手。据我所知,我尽力了。提前感谢

正如Justin所指出的,您在plunker上提供的代码中有一些缺陷。除此之外,您没有正确使用D3.js API。我建议大家通读一遍,尤其是关于比例、轴和选择的。

您面临的另一个问题是,您需要将geojson数据转换为有用的平面数组格式——您应该检查函数map(将列表映射到列表)和reduce(将列表映像到值)。通过使用这两个函数(也是嵌套的),您可以很容易地从原始数据中创建漂亮的数据集。

最后,这里是一个基于plunker和提供的代码片段的条形图的工作示例:http://plnkr.co/edit/eqJ7AkzWpHO4ZQENkXgy?p=preview

相关的数据处理部分发生在这里,我从geojson文件中提取一个数据数组和一个标签数组:

d3.json("myfile.geojson", function(res) {
  var data = res.features.map(function(d){
    return d.properties.profit;
  });
  var labels = res.features.map(function(d, i){
    return i;
    // return d.properties.nga;
  });
  barchart(500, 500, data, labels);
});

代码的其余部分处理如何正确显示条形图和轴。这个代码现在可以很容易地用堆叠区域图或饼图来代替。

我没能完全解决,只是提出了一些建议。希望它有帮助,其他人可以编辑这个或贡献更好的答案。

  1. d3.layout.stack()没有函数.sort,而是有.values而不是.value
  2. 用d3.json加载.geojson文件
  3. 您有.append(text),应该是.append
  4. 如果你只是想创建条形图,那么我认为不需要堆栈布局

最新更新