JIT添加子图个别边缘颜色

时间:2014-04-01 11:57:55

标签: javascript json infovis

我有一个显示两级节点的径向图。单击节点时,可以通过调用sum()函数添加子图。除了为新添加的边设置单独的颜色外,一切正常。 有没有人试图加载具有单独边缘颜色的子图或者暗示我做错了什么?

我在这里得到并添加子图:

subtree = getSubtree(node.id);  

//perform animation.  
subtree.success(function(data){
    rg.op.sum(data, {  
        type: 'fade:seq',  
        fps: 40,  
        duration: 1000,  
        hideLabels: false,  
    });  
});

我也检查了加载的数据但对我来说似乎完全相同。我还将相同的数据加载到初始图形而不是子图形中,然后将其颜色正确。然而,这里有一些测试数据,它是函数getSubtree的结果(id“占位符”匹配应该添加子图的现有id):

{
"id": "placeholder1",
"name": "country",
"children": [{
    "id": "2_3mSV~_scat_1",
    "name": "hyponym",
    "children": [{
        "children": [],
        "adjacencies": {
            "nodeTo": "2_3mSV~_scat_1",
            "data": {
                "$color": "#29A22D"
            }
        },
        "data": {
            "$color": "#29A22D"
        },
        "id": "3_58z3q_sc_174_6",
        "name": "location"
    }],
    "data": {
        "$type": "star",
        "$color": "#666666"
    },
    "adjacencies": [{
        "nodeTo": "3_58z3q_sc_174_6",
        "data": {
            "$color": "#29A22D"
        }
    }]
}]
}

1 个答案:

答案 0 :(得分:1)

我终于在框架中找到了问题......

当调用sum()调用中的构造函数实际添加子树时,包含有关邻接的单个可视化的信息的数据对象不用于添加新的邻接。因此我手动更改了代码(这个for循环是construct()函数中现有for循环的新版本):

for(var i=0, ch = json.children; i<ch.length; i++) {

  //CUSTOM CODE: GET DATA OF THIS ADJACENCE
      data = null;
      if(ch[i].adjacencies[0]==undefined){
      data = ch[i].adjacencies.data;
      }
      else{
          data = ch[i].adjacencies.data;
      }

      ans.addAdjacence(json, ch[i], data);
      arguments.callee(ans, ch[i]);
      //CUSTOM CODE END

}