0

特定のキー値を持つノードをターゲットにすることはできますか?

「カテゴリ」を持つノード: データセットに別の色を割り当てようとしています。これは可能だと思います。次のようなifステートメントを書くことができるかどうか疑問に思っています

if(d.node.category ==dataset){
 d3.select(this).style("fill", "yellow");
}

これが、ノードに色を追加する方法です

var z = d3.scale.category10();

var node = svg.selectAll("circle.node")
      .data(nodes)
    .enter().append("svg:circle")
      .attr("r", function(d){return d.size*2})
      .attr('class', 'generalClass')
      .style("fill", function(d) { return z(d.parent); })
      .style("stroke", "#000")
      .style("stroke-width", "4px")
      .call(force.drag);

私のJSONは次のようになります

function getNodes() {

var inNodes = {
    "name": "APP",
    "dept": "NYC",
    "children": [
        {
        "name": "API 1",
        "dept": "Third Party",
        "size": 15,
        "url": "http://www.nytimes.com/"
        },
        {
        "name": "API 2",
        "dept": "NYC",
        "size": 15,
        "url": "https://www.google.com/"
        },
        {
        "name": "Dataset",
        "category": "Dataset", // this one I am trying to assign a diff color fill
        "dept": "Third Party",
        "size": 15,
        "url": "http://www.wired.com/",
        }
    ],
    "size":20,
    "url": "http://www.nyc.gov/html/index.html"
};
return inNodes;
}
4

1 に答える 1

0

カテゴリが存在する場合、別の塗りつぶしを割り当てることができますか?

d3.selectAll('path').data(inNodes.children).enter()
    .append('path')
    .doOtherStuffToCreateYourPath()
    .attr('fill', function (d) {
        return (d.category === 'DataSet' ? 'red' : 'defaultColor');
    });
于 2013-06-20T19:27:18.550 に答える