D3.js 如何为本地geojson文件绘制d3气泡图

D3.js 如何为本地geojson文件绘制d3气泡图,d3.js,charts,geojson,D3.js,Charts,Geojson,我想画一张d3气泡图。以d3为例 我试图获取本地文件的气泡图,即myfile.geojson。我尝试的代码在plunker链接中。我想根据“利润”值绘制一个气泡图。我尝试了谷歌和youtube上的一切,但我没有找到解决问题的办法。 我是d3新手。如果我在代码中有任何错误,请建议我改正。提前谢谢 您的数据与flare.json不同,因此复制递归代码不会使您的数据无效。您的数据集非常简单,它不需要递归来展平数据集 function classes(root) { var classes = [

我想画一张d3气泡图。以d3为例 我试图获取本地文件的气泡图,即
myfile.geojson
。我尝试的代码在plunker链接中。我想根据“利润”值绘制一个气泡图。我尝试了谷歌和youtube上的一切,但我没有找到解决问题的办法。

我是d3新手。如果我在代码中有任何错误,请建议我改正。提前谢谢

您的数据与flare.json不同,因此复制递归代码不会使您的数据无效。您的数据集非常简单,它不需要递归来展平数据集

function classes(root) {
  var classes = [];

  function recurse(profit, node) {
    if (node.profit) node.profit.forEach(function(child) { recurse(node.profit, child); });
    else classes.push({packageName: type, className: node.profit, value: node.profit});
  }

  recurse(null, root);
  return {features: classes};
}
这应该是:

function classes(root) {
  var classes = root.features.map(function(f, i) {
    //here i is the index
    return {
      value: f.properties.profit,
      className: "Hello" + i,////just giving some dummy values
      packageName: i//just giving some dummy values
    }
  });
  return classes;
}
现在将此数据传递到气泡布局,如下所示:

var node = svg.selectAll(".node")
        .data(bubble.nodes({
          children: classes(root)
        }).filter(function(d) {
          return !d.children;
        }))
        .enter().append("g")
        .attr("class", "node")
        .attr("transform", function(d) {

          return "translate(" + d.x + "," + d.y + ")";
        });
编辑

气泡图基于利润值:

圆的半径取决于您在
类函数中给出的值

return {
          value: f.properties.profit,
          className: "Hello" + i,////just giving some dummy values
          packageName: i//just giving some dummy values
        }
因此,价值或利润越大,半径就越大。 半径将相对于您在此处设置的直径:

 var bubble = d3.layout.pack()
      .sort(null)
      .size([diameter, diameter])
d3中的读取域范围

我应该给出什么来代替className和packageName,以获得基于利润值的气泡图

我不知道该怎么回答,我认为你的概念不清楚,这是一个幼稚的问题

如果看到packageName定义颜色的代码

.style("fill", function(d) {
          return color(d.packageName);
        });
和className定义要在气泡中显示的文本

   .text(function(d) {
      return d.className;
    });
请查看fiddle中的代码,它非常容易理解


工作代码。

谢谢您,先生。但泡沫图并不是根据利润值绘制的。我应该给出什么来代替className和packageName,以获得基于利润值的气泡图。先生,请帮帮我。谢谢好的,先生,我知道了。谢谢,谢谢。对不起,先生,我第一次拿不好,非常感谢,先生。谢谢。:-。