如何在不重新渲染图形的情况下更新dagreD3节点样式

时间:2018-07-20 20:08:03

标签: dagre-d3

是否有一种方法可以更改节点的样式而不必重新渲染图形,就像下面的最后一个代码块一样?

vars = {'Asymmetry' 'Border irregularity' 'colors' 'contrast' 'Co-relation' 
'Homogeneity' 'Energy'};
 x = [0.148 0.298 3 0.027 0.959 0.992 0.692
0.248 0.462 3 0.015 0.997 0.996 0.837
0.683 0.827 3 0.030 0.974 0.989 0.634
0.170 0.509 3 0.065 0.964 0.977 0.399
0.663 0.764 3 0.061 0.945 0.983 0.645
0.641 0.671 3 0.050 0.953 0.987 0.703
0.653 0.796 2 0.062 0.961 0.981 0.528
0.458 0.704 2 0.019 0.934 0.993 0.852
0.555 0.729 2 0.087 0.976 0.980 0.380
0.454 0.657 2 0.059 0.953 0.982 0.467
0.379 0.497 2 0.058 0.976 0.979 0.445
0.443 0.486 2 0.034 0.896 0.998 0.810
0.194 0.342 2 0.012 0.956 0.997 0.895
0.248 0.462 3 0.015 0.977 0.996 0.837
0.155 0.340 2 0.010 0.930 0.966 0.911
0.458 0.704 2 0.019 0.934 0.993 0.852];
y =  {'Cancer';'Cancer';'Cancer';'Cancer';'Cancer';'Cancer';'Cancer';'Cancer';'Cancer';'Cancer';'Cancer';'Cancer';'non-Cancer';'non-Cancer';'non-Cancer';'non-Cancer'};
t = fitctree(x,y,'PredictorNames',vars, ...
'CategoricalPredictors',{},'Prune','off');
view(t);
X1=[0.148 0.186 2 0.139 0.984 0.992 0.558] 
label = predict(t,X1);
view(t,'mode','graph'); 

1 个答案:

答案 0 :(得分:1)

要更新D3节点而不再次调用渲染,请执行以下操作:

nodeid = "step1";
d3.select('#' + nodeid).attr('style', 'fill:blue');

示例:

svg.selectAll("g.node").on("click", function (id) {
    d3.select('#' + id).attr('class', 'bluebackground');
});