簡體   English   中英

更改d3朝陽圖的json標簽

[英]Changing labels of json for d3 sunburst diagram

我正在嘗試使用森伯斯特圖中的這段代碼來處理我的數據。 最初,我的數據來自csv,借助d3.nest()我將其轉換為json

   d3.csv("chord.csv", function(error,csv_data){
         var sunData1 = {"key": "KINGDOM", "values": d3.nest()
        .key(function(d) { return d.KINGDOM; })
        .key(function(d) { return d.PHYLUM; })
        .key(function(d) { return d.CCLASS; })
        .key(function(d) { return d.ORDER; })
        .key(function(d) { return d.FAMILY; })
        .key(function(d) { return d.GENUS; })
        .rollup(function(v) {return  v.length;})
        .entries(csv_data) 
        }; 

這給我像

[{"key":"Animalia","values":[{"key":"Chordata","values":[{"key":"Mammalia","values":[{"key":"Chiroptera","values":[{"key":"Vespertilionidae","values":[{"key":"Myotis","values":496},

但在示例中,標簽是名稱,子級和大小

在這篇文章的幫助下,我正在使用map(function)將標簽更改為flare.json中所需的標簽。 該代碼在這里

        var sunData2 = {"name":"KINGDOM", "children": sunData1.values.map(function (kingdom){
                return {"name":kingdom.key,  "children": kingdom.values.map(function(phylum){
                   return {"name":phylum.key, "children": phylum.values.map(function(cclass){
                       return{"name":cclass.key, "children": cclass.values.map(function(order){
                           return {"name":order.key, "children": order.values.map(function(family){
                               return {"name":family.key, "children": family.values.map(function(genus){
                                  return {"name":genus.key, "children": genus.values};
                               })};
                           })};
                       })};
                   })};     
                })};
        })};

現在,我可以將其更改為所需的格式,但是現在它將json中“值”的大小更改為“子級”,如下所示

 {"name":"KINGDOM","children":[{"name":"Animalia","children":[{"name":"Chordata","children":[{"name":"undefined","children":[{"name":"Chiroptera","children":[{"name":"Vespertilionidae","children":[{"name":"Myotis","children":496},

因此,我正在尋找一些建議,以便將引用計數的“兒童”更改為不同的內容,然后將其映射到可視化代碼中。

問題已解決,我必須刪除數據文件和引用該數據文件的注釋

當您說我試圖為大小值(而不是子項)使用不同的標簽時, 不確定是否能夠正確回答您的問題:

但是,這是我嘗試給每個節點計數並使用它繪制圓弧:

function makeSize(json){
  if (json.children instanceof Array){
    json.count = json.children.length;//if array make it count equal to child count
    json.children.forEach(function(d){
      makeSize(d);//call recursive for all children
    });
  } else {
    if (isFinite(json.children))
      json.count = json.children;//if number store that in the count
    else
      json.count = 0;//if nothing make the count 0
  }
}

單擊計數收音機。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM