Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-D3强制布局突出显示子树_Javascript_Html_D3.js - Fatal编程技术网

JavaScript-D3强制布局突出显示子树

JavaScript-D3强制布局突出显示子树,javascript,html,d3.js,Javascript,Html,D3.js,我的数据由d3 force布局表示。一些节点折叠,而另一些节点不折叠。我要突出显示的子节点。这是我的包含JavaScript和html的文件 力有向图 圆节点{ 光标:指针; 行程:3182bd; 笔划宽度:1.5px; } line.link{ 填充:无; 行程:9ecae1; 笔划宽度:1.5px; } var w=1060, h=800, 节点, 链接 根 T 风险价值水平=1; var-force=d3.layout.force .ontick,滴答 .尺寸[w,h]; var vis

我的数据由d3 force布局表示。一些节点折叠,而另一些节点不折叠。我要突出显示的子节点。这是我的包含JavaScript和html的文件

力有向图 圆节点{ 光标:指针; 行程:3182bd; 笔划宽度:1.5px; } line.link{ 填充:无; 行程:9ecae1; 笔划宽度:1.5px; } var w=1060, h=800, 节点, 链接 根 T 风险价值水平=1; var-force=d3.layout.force .ontick,滴答 .尺寸[w,h]; var vis=d3.selectchart.appendsvg:svg .宽度,w .高度,h; 根={ 名称:flare, 儿童:[ { 名称:分析, 儿童:[ { 名称:集群, 儿童:[ {名称:凝聚群集,大小:3938}, {名称:CommunityStructure,大小:3812}, {名称:HierarchycalCluster,大小:6714}, {名称:mergedge,大小:743} ] }, { 名称:graph, 儿童:[ {name:betweennscentrality,size:3534}, {名称:LinkDistance,大小:5731}, {名称:MaxFlowMinCut,大小:7840}, {名称:最短路径,大小:5914}, {名称:SpanningTree,大小:3416} ] }, { 名称:优化, 儿童:[ {名称:AspectRatioBanker,大小:7074} ] } ] }, { 名称:动画, 儿童:[ {名称:1,大小:17010}, {名称:FunctionSequence,大小:5842}, { 名称:内插, 儿童:[ {名称:ArrayInterpolator,大小:1983}, {名称:ColorInterpolator,大小:2047}, {名称:DateInterpolator,大小:1375}, {名称:插值器,大小:8746}, {名称:MatrixInterpolator,大小:2202}, {名称:NumberInterpolator,大小:1382}, {名称:ObjectInterpolator,大小:1629}, {名称:PointInterpolator,大小:1675}, {名称:矩形插值器,大小:2042} ] }, {name:ISchedulable,size:1041}, {name:Parallel,size:5176}, {名称:暂停,大小:449}, {名称:调度程序,大小:5593}, {name:Sequence,size:5534}, {name:Transition,size:9201}, {名称:Transitioner,大小:19975}, {名称:TransitionEvent,大小:1116}, {名称:吐温,尺寸:6006} ] }, { 名称:数据,, 儿童:[ { 名称:转换器, 儿童:[ {名称:转换器,大小:721}, {名称:DelimitedTextConverter,大小:4294}, {名称:GraphMLConverter,大小:9800}, {名称:IDataConverter,大小:1314}, {名称:JSONConverter,大小:2220} ] }, {name:DataField,大小:1759}, {名称:DataSchema,大小:2165}, {名称:数据集,大小:586}, {名称:数据源,大小:3331}, {名称:DataTable,大小:772}, {名称:DataUtil,大小:3322} ] }, { 名称:显示器, 儿童:[ {名称:DirtySprite,大小:8833}, {名称:LineSprite,大小:1732}, {名称:RectSprite,大小:3623}, {名称:TextSprite,大小:10066} ] }, { 名称:flex, 儿童:[ {名称:FlareVis,大小:4116} ] }, { 名称:物理学, 儿童:[ {名称:牵引力,大小:1082}, {名称:重力力,大小:1336}, {名称:IForce,大小:319}, {名称:NBodyForce,大小:10498}, {名称:粒子,大小:2822}, {名称:模拟,大小:9983}, {名称:Spring,大小:2213}, {名称:SpringForce,尺寸:1681} ] }, { 名称:查询, 儿童:[ {名称:AggregateExpression,大小:1616}, {名称:和,大小:102 7}, {名称:算术,大小:3891}, {name:Average,size:891}, {name:BinaryExpression,大小:2893}, {名称:比较,大小:5103}, {名称:CompositeExpression,大小:3677}, {name:Count,size:781}, {名称:DateUtil,大小:4141}, {name:Distinct,size:933}, {name:Expression,size:5130}, {名称:ExpressionIterator,大小:3617}, {名称:Fn,大小:3240}, {name:If,size:2732}, {名称:IsA,大小:2039}, {name:Literal,size:1214}, {名称:匹配,大小:3748}, {名称:最大,大小:843}, { 名称:方法, 儿童:[ {名称:add,大小:593}, {名称:和,大小:330}, {name:average,size:287}, {name:count,size:277}, {name:distinct,size:292}, {名称:div,大小:595}, {名称:eq,大小:594}, {名称:fn,大小:460}, {名称:gt,大小:603}, {名称:gte,大小:625}, {名称:iff,大小:748}, {名称:isa,大小:461}, {名称:lt,大小:597}, {名称:lte,大小:619}, {名称:max,大小:283}, {名称:min,大小:283}, {名称:mod,大小:591}, {名称:mul,大小:603}, {名称:neq,大小:599}, {名称:不,大小:386}, {名称:或,大小:323}, {名称:orderby,大小:307}, {名称:范围,大小:772}, {name:select,size:296}, {名称:stddev,大小:363}, {名称:sub,大小:600}, {name:sum,size:280}, {名称:更新,大小:307}, {名称:方差,大小:335}, {name:where,size:299}, {名称:xor,大小:354}, {名称:\尺寸:264} ] }, {名称:最小,大小:843}, {名称:不,大小:1554}, {名称:或,大小:970}, {name:Query,size:13896}, {名称:范围,大小:1594}, {名称:StringUtil,大小:4130}, {name:Sum,size:791}, {name:Variable,size:1124}, {名称:方差,大小:1876}, {名称:Xor,大小:1101} ] }, { 名称:比例尺, 儿童:[ {名称:IScaleMap,大小:2105}, {名称:LinearScale,大小:1316}, {名称:对数刻度,大小:3151}, {名称:序数刻度,大小:3770}, {名称:QuantileScale,大小:2435}, {名称:QuantitativeScale,大小:4839}, {名称:RootScale,大小:1756}, {名称:比例,大小:4268}, {名称:ScaleType,大小:1821}, {名称:时间刻度,大小:5833} ] }, { 名称:util, 儿童:[ {名称:数组,大小:8258}, {名称:颜色,大小:10001}, {名称:日期,大小:8217}, {名称:显示器,尺寸:12555}, {名称:筛选器,大小:2324}, {名称:几何体,大小:10993}, { 名称:堆, 儿童:[ {名称:FibonacciHeap,大小:9354}, {名称:HeapNode,大小:1233} ] }, {名称:335}, {名称:IPredicate,大小:383}, {名称:IValueProxy,大小:874}, { 姓名:数学, 儿童:[ {名称:DenseMatrix,大小:3165}, {名称:IMatrix,大小:2815}, {名称:SparseMatrix,大小:3366} ] }, {名称:数学,尺码:17705}, {名称:方向,大小:1486}, { 名称:调色板, 儿童:[ {名称:调色板,大小:6367}, {名称:调色板,大小:1229}, {名称:ShapePalette,大小:2059}, {名称:SizePalette,大小:2291} ] }, {name:Property,size:5559}, {名称:形状,大小:19118}, {name:Sort,size:6887}, {name:Stats,size:6557}, {名称:字符串,大小:22026} ] }, { 姓名:vis, 儿童:[ { 名称:安讯士, 儿童:[ {名称:轴,大小:1302}, {名称:Axis,大小:24593}, {名称:AxisGridLine,大小:652}, {名称:AxisLabel,大小:636}, {名称:CartesianAxes,大小:6703} ] }, { 名称:控件, 儿童:[ {名称:AnchorControl,大小:2138}, {名称:ClickControl,大小:3824}, {名称:控件,大小:1353}, {名称:ControlList,大小:4665}, {名称:DragControl,大小:2649}, {名称:ExpandControl,大小:2832}, {名称:HoverControl,大小:4896}, {名称:IControl,大小:763}, {名称:PanZoomControl,大小:5222}, {名称:SelectionControl,大小:7862}, {名称:ToolTiControl,大小:8435} ] }, { 名称:数据,, 儿童:[ {名称:数据,大小:20544}, {名称:DataList,大小:19788}, {名称:DataSprite,大小:10349}, {名称:EdgeSprite,大小:3301}, {名称:NodeSprite,大小:19382}, { 名称:render, 儿童:[ {名称:ArrowType,大小:698}, {名称:Edgerender,大小:5569}, {名称:iRender,大小:353}, {名称:ShaperEnder,大小:2247} ] }, {名称:ScaleBinding,大小:11275}, {名称:树,大小:7147}, {名称:TreeBuilder,大小:9930} ] }, { 名称:活动, 儿童:[ {名称:DataEvent,大小:2313}, {名称:SelectionEvent,大小:1880}, {名称:TooltipEvent,大小:1701}, {名称:VisualizationEvent,大小:1117} ] }, { 名称:传奇, 儿童:[ {名称:图例,大小:20859}, {名称:LegendItem,大小:4614}, {名称:LegendRange,大小:10530} ] }, { 姓名:接线员,, 儿童:[ { 名称:扭曲,, 儿童:[ {名称:双焦点存储,大小:4461}, {名称:变形,大小:6314}, {名称:fisheye,大小:3444} ] }, { 名称:编码器, 儿童:[ {名称:ColorEncoder,大小:3179}, {名称:编码器,大小:4060}, {名称:PropertyEncoder,大小:4138}, {名称:ShapeEncoder,大小:1690}, {名称:SizenCoder,大小:1830} ] }, { 名称:过滤器, 儿童:[ {名称:FisheyeTreeFilter,大小:5219}, {名称:GraphDistanceFilter,大小:3165}, {名称:VisibilityFilter,大小:3509} ] }, {名称:IOperator,大小:1286}, { 名称:标签, 儿童:[ {名称:贴标机,尺寸:9956}, {名称:RadialLabeler,尺寸:3899}, {名称:StackedRealAbeler,大小:3202} ] }, { 名称:布局, 儿童:[ {名称:AxisLayout,大小:6725}, {名称:BundledEdgeRouter,大小:3727}, {名称:CircleLayout,大小:9317}, {名称:CirclePackingLayout,大小:12003}, {名称:树状图布局,大小:4853}, {名称:ForceDirectedLayout,大小:8411}, {名称:IcicleTreeLayout,大小:4864}, {名称:IndentedTreeLayout,大小:3174}, {名称:布局,大小:7881}, {名称:NodeLinkTreeLayout,大小:12870}, {名称:PieLayout,大小:2728}, {名称:RadialTreeLayout,大小:12348}, {名称:RandomLayout,大小:870}, {名称:StackedRealAyout,大小:9121}, {名称:TreeMapLayout,大小:9191} ] }, {名称:运算符,大小:2490}, {名称:OperatorList,大小:5248}, {名称:运算符顺序,大小:4190}, {名称:OperatorSwitch,大小:2581}, {名称:SortOperator,大小:2023} ] }, {名称:可视化,大小:16540} ] } ] }; 函数parseLevelnode,级别{ node.level=级别; 如果类型为node.children!=“未定义”{ node.children.forEachfunctionchildren{ parseLevelchildren,级别+1; }; } } parseLevelroot,0; //console.logJSON.stringifyroot,null,2; 使现代化 函数toggleAlld{ 如果你有孩子{ d、 孩子们。foreachtogleall; 如果d.level<折叠\ U level{ 回来 } 切换; } } //初始化显示以显示几个节点。 根、子、叶; updateroot; // }; 功能更新{ 变量节点=根, links=d3.layout.tree.linksnodes; //重新启动强制布局。 武力 .Nodes节点 .linkslinks 1.charge-1000 .linkDistance100 .摩擦力0.5 开始 //更新链接… link=vis.selectAllline.link .datalinks,函数d{return d.target.id;}; //输入任何新链接。 link.enter.insertsvg:line、.node .attr类,链接 .attrx1,函数d{return d.source.x;} .attry1,函数d{return d.source.y;} .attrx2,函数d{return d.target.x;} .attry2,函数d{return d.target.y;}; //退出所有旧链接。 link.exit.remove; //更新节点… node=vis.selectAllcircle.node .datanodes,函数d{return d.id;} .样式填充、颜色; //输入任何新节点。 node.enter.appendsvg:circle .attr类、节点 .attrcx,函数d{return d.x;} .attracy,函数d{return d.y;} attrr先生,15岁 .样式、填充、颜色 .onclick,鼠标悬停 .callforce.drag; //退出所有旧节点。 node.exit.remove; t=vis.selectAll.t-node .datanodes,函数d{return d.id;} .样式填充、颜色; //输入任何新节点。 t、 enter.appendsvg:text .attrclass,t节点 .attrdx,25px .attry,0 .textfunctiond{返回d.name++d.level?d.level:}; //.callforce.drag; //退出所有旧节点。 t、 退出。移除; } 功能记号{ link.attrx1,函数d{return d.source.x;} .attry1,函数d{return d.source.y;} .attrx2,函数d{return d.target.x;} .attry2,函数d{return d.target.y;}; node.attrcx,函数d{return d.x;} .attracy,函数d{return d.y;}; t、 attrx,函数d{return d.x;} .attry,函数d{return d.y;}; } //叶节点颜色为橙色,包装为白色或蓝色。 函数着色{ 返回d._children?3182bd:d.children?c6dbef:fd8d3c; } //在单击时切换子项。 功能鼠标器{ 如果你有孩子{ d、 _children=d.children; d、 children=null; }否则{ d、 儿童=d.\U儿童; d、 _children=null; } 使现代化 } //返回根目录下所有节点的列表。 函数根{ var节点=[],i=0; 函数递归节点{ 如果node.children node.children.forEachrecurse; 如果!node.id node.id=++i; nodes.pushnode; } recurseroot; 返回节点; } 功能切换{ 如果你有孩子{ d、 _children=d.children; d、 children=null; }否则{ d、 儿童=d.\U儿童; d、 _children=null; } }
我将使用一点递归来预处理数据,并添加一个关于它是否是查询的子级的属性:

  function isChildofQuery(children, value){
    children.forEach(function(d){
      d['isQChild'] = value;
      if (d.name === "query"){
        isChildofQuery(d.children, true);
      } else if (d.children){
        isChildofQuery(d.children, false);
      }
    })
  }
  isChildofQuery(root.children, false);
然后在绘制链接时:

  link.enter().insert("svg:line", ".node")
    .attr("class", "link")
    .attr("x1", function(d) { return d.source.x; })
    .attr("y1", function(d) { return d.source.y; })
    .attr("x2", function(d) { return d.target.x; })
    .attr("y2", function(d) { return d.target.y; })
    .style("stroke", function(d){
      return d.target.isQChild ? "red" : "#9ecae1;";
    });
完整运行代码:

力有向图 圆节点{ 光标:指针; 行程:3182bd; 笔划宽度:1.5px; } line.link{ 填充:无; 行程:9ecae1; 笔划宽度:1.5px; } var w=1060, h=800, 节点, 链接 根 T 风险价值水平=1; var-force=d3.layout.force .ontick,滴答 .尺寸[w,h]; var vis=d3.selectchart.appendsvg:svg .宽度,w .高度,h; 根={ 名称:flare, 儿童:[ { 名称:分析, 儿童:[ { 名称:集群, 儿童:[ {名称:凝聚群集,大小:3938}, {名称:CommunityStructure,大小:3812}, {名称:HierarchycalCluster,大小:6714}, {名称:mergedge,大小:743} ] }, { 名称:graph, 儿童:[ {name:betweennscentrality,size:3534}, {名称:LinkDistance,大小:5731}, {名称:MaxFlowMinCut,大小:7840}, {名称:最短路径,大小:5914}, {名称:SpanningTree,大小:3416} ] }, { 名称:优化, 儿童:[ {名称:AspectRatioBanker,大小:7074} ] } ] }, { 名称:动画, 儿童:[ {名称:1,大小:17010}, {名称:FunctionSequence,大小:5842}, { 名称:内插, 儿童:[ {名称:ArrayInterpolator,大小:1983}, {名称:ColorInterpolator,大小:2047}, {名称:DateInterpolator,大小:1375}, {名称:插值器,大小:8746}, {名称:MatrixInterpolator,大小:2202}, {名称:NumberInterpolator,大小:1382}, {名称:ObjectInterpolator,大小:1629}, {名称:PointInterpolator,大小:1675}, {名称:矩形插值器,大小:2042} ] }, {name:ISchedulable,size:1041}, {name:Parallel,size:5176}, {名称:暂停,大小:449}, {名称:调度程序,大小:5593}, {name:Sequence,size:5534}, {name:Transition,size:9201}, {名称:Transitioner,大小:19975}, {名称:TransitionEvent,大小:1116}, {名称:吐温,尺寸:6006} ] }, { 名称:数据,, 儿童:[ { 名称:转换器, 儿童:[ {名称:转换器,大小:721}, {名称:DelimitedTextConverter,大小:4294}, {名称:GraphMLConverter,大小:9800}, {名称:IDataConverter,大小:1314}, {名称:JSONConverter,大小:2220} ] }, {name:DataField,大小:1759}, {名称:DataSchema,大小:2165}, {名称:数据集,大小:586}, {名称:数据源,大小:3331}, {名称:DataTable,大小:772}, {名称:DataUtil,大小:3322} ] }, { 名称:显示器, 儿童:[ {名称:DirtySprite,大小:8833}, {名称:LineSprite,大小:1732}, {名称:RectSprite,大小:3623}, {名称:TextSprite,大小:10066} ] }, { 名称:flex, 儿童:[ {名称:FlareVis,大小:4116} ] }, { 名称:物理学, 儿童:[ {名称:牵引力,大小:1082}, {名称:重力力,大小:1336}, {名称:IForce,大小:319}, {名称:NBodyForce,大小:10498}, {名称:粒子,大小:2822}, {名称:模拟,大小:9983}, {名称:Spring,大小:2213}, {名称:SpringForce,尺寸:1681} ] }, { 名称:查询, 儿童:[ {名称:AggregateExpression,大小:1616}, {名称:和,大小:1027}, {名称:算术,大小:3891}, {name:Average,size:891}, {name:BinaryExpression,大小:2893}, {名称:比较,大小:5103}, {名称:CompositeExpression,大小:3677}, {name:Count,size:781}, {名称:DateUtil,大小:4141}, {name:Distinct,size:933}, {name:Expression,size:5130}, {名称:ExpressionIterator,大小:3617}, {名称:Fn,大小:3240}, {name:If,size:2732}, {名称:IsA,大小:2039}, {name:Literal,size:1214}, {名称:匹配,大小:3748}, {名称:最大,大小:843}, { 名称:方法, 儿童:[ {名称:add,大小:593}, {名称:和,大小:330}, {name:average,size:287}, {name:count,size:277}, {name:distinct,size:292}, {名称:div,大小:595}, {名称:eq,大小:594}, {名称:fn,大小:460}, {名称:gt,大小:603}, {名称:gte,大小:625}, {名称:iff,大小:748}, {名称:isa,大小:461}, {名称:lt,大小:597}, {名称:lte,大小:619}, {名称:max,大小:283}, {名称:min,大小:283}, {名称:mod,大小:591}, {名称:mul,大小:603}, {名称:neq,大小:599}, {名称:不,大小:386}, {名称:或,大小:323}, {名称:orderby,大小:307}, {名称:范围,大小:772}, {name:select,size:296}, {名称:stddev,大小:363}, {名称:sub,大小:600}, {name:sum,size:280}, {名称:更新,大小:307}, {名称:方差,大小:335}, {name:where,size:299}, {名称:xor,大小:354}, {名称:\尺寸:264} ] }, {名称:最小,大小:843}, {名称:不,大小:1554}, {名称:或,大小:970}, {name:Query,size:13896}, {名称:范围,大小:1594}, {名称:StringUtil,大小:4130}, {name:Sum,size:791}, {name:Variable,size:1124}, {名称:方差,大小:1876}, {名称:Xor,大小:1101} ] }, { 名称:比例尺, 儿童:[ {名称:IScaleMap,大小:2105}, {名称:LinearScale,大小:1316}, {名称:对数刻度,大小:3151}, {名称:序数刻度,大小:3770}, {名称:QuantileScale,大小:2435}, {名称:QuantitativeScale,大小:4839}, {名称:RootScale,大小:1756}, {名称:比例,大小:4268}, {名称:ScaleType,大小:1821}, {名称:时间刻度,大小:5833} ] }, { 名称:util, 儿童:[ {名称:数组,大小:8258}, {名称:颜色,大小:10001}, {名称:日期,大小:8217}, {名称:显示器,尺寸:12555}, {名称:筛选器,大小:2324}, {名称:几何体,大小:10993}, { 名称:堆, 儿童:[ {名称:FibonacciHeap,大小:9354}, {名称:HeapNode,大小:1233} ] }, {名称:335}, {名称:IPredicate,大小:383}, {名称:IValueProxy,大小:874}, { 姓名:数学, 儿童:[ {名称:DenseMatrix,大小:3165}, {名称:IMatrix,大小:2815}, {名称:SparseMatrix,大小:3366} ] }, {名称:数学,尺码:17705}, {名称:方向,大小:1486}, { 名称:调色板, 儿童:[ {名称:调色板,大小:6367}, {名称:调色板,大小:1229}, {名称:ShapePalette,大小:2059}, {名称:SizePalette,大小:2291} ] }, {name:Property,size:5559}, {名称:形状,大小:19118}, {name:Sort,size:6887}, {name:Stats,size:6557}, {名称:字符串,大小:22026} ] }, { 姓名:vis, 儿童:[ { 名称:安讯士, 儿童:[ {名称:轴,大小:1302}, {名称:Axis,大小:24593}, {名称:AxisGridLine,大小:652}, {名称:AxisLabel,大小:636}, {名称:CartesianAxes,大小:6703} ] }, { 名称:控件, 儿童:[ {名称:AnchorControl,大小:2138}, {名称:ClickControl,大小:3824}, {名称:控件,大小:1353}, {名称:ControlList,大小:4665}, {名称:DragControl,s ize:2649}, {名称:ExpandControl,大小:2832}, {名称:HoverControl,大小:4896}, {名称:IControl,大小:763}, {名称:PanZoomControl,大小:5222}, {名称:SelectionControl,大小:7862}, {名称:ToolTiControl,大小:8435} ] }, { 名称:数据,, 儿童:[ {名称:数据,大小:20544}, {名称:DataList,大小:19788}, {名称:DataSprite,大小:10349}, {名称:EdgeSprite,大小:3301}, {名称:NodeSprite,大小:19382}, { 名称:render, 儿童:[ {名称:ArrowType,大小:698}, {名称:Edgerender,大小:5569}, {名称:iRender,大小:353}, {名称:ShaperEnder,大小:2247} ] }, {名称:ScaleBinding,大小:11275}, {名称:树,大小:7147}, {名称:TreeBuilder,大小:9930} ] }, { 名称:活动, 儿童:[ {名称:DataEvent,大小:2313}, {名称:SelectionEvent,大小:1880}, {名称:TooltipEvent,大小:1701}, {名称:VisualizationEvent,大小:1117} ] }, { 名称:传奇, 儿童:[ {名称:图例,大小:20859}, {名称:LegendItem,大小:4614}, {名称:LegendRange,大小:10530} ] }, { 姓名:接线员,, 儿童:[ { 名称:扭曲,, 儿童:[ {名称:双焦点存储,大小:4461}, {名称:变形,大小:6314}, {名称:fisheye,大小:3444} ] }, { 名称:编码器, 儿童:[ {名称:ColorEncoder,大小:3179}, {名称:编码器,大小:4060}, {名称:PropertyEncoder,大小:4138}, {名称:ShapeEncoder,大小:1690}, {名称:SizenCoder,大小:1830} ] }, { 名称:过滤器, 儿童:[ {名称:FisheyeTreeFilter,大小:5219}, {名称:GraphDistanceFilter,大小:3165}, {名称:VisibilityFilter,大小:3509} ] }, {名称:IOperator,大小:1286}, { 名称:标签, 儿童:[ {名称:贴标机,尺寸:9956}, {名称:RadialLabeler,尺寸:3899}, {名称:StackedRealAbeler,大小:3202} ] }, { 名称:布局, 儿童:[ {名称:AxisLayout,大小:6725}, {名称:BundledEdgeRouter,大小:3727}, {名称:CircleLayout,大小:9317}, {名称:CirclePackingLayout,大小:12003}, {名称:树状图布局,大小:4853}, {名称:ForceDirectedLayout,大小:8411}, {名称:IcicleTreeLayout,大小:4864}, {名称:IndentedTreeLayout,大小:3174}, {名称:布局,大小:7881}, {名称:NodeLinkTreeLayout,大小:12870}, {名称:PieLayout,大小:2728}, {名称:RadialTreeLayout,大小:12348}, {名称:RandomLayout,大小:870}, {名称:StackedRealAyout,大小:9121}, {名称:TreeMapLayout,大小:9191} ] }, {名称:运算符,大小:2490}, {名称:OperatorList,大小:5248}, {名称:运算符顺序,大小:4190}, {名称:OperatorSwitch,大小:2581}, {名称:SortOperator,大小:2023} ] }, {名称:可视化,大小:16540} ] } ] }; 函数parseLevelnode,级别{ node.level=级别; 如果类型为node.children!=“未定义”{ node.children.forEachfunctionchildren{ parseLevelchildren,级别+1; }; } } parseLevelroot,0; 函数isChildofQuerychildren,值{ 孩子们{ d['isQChild']=值; 如果d.name==查询{ isChildofQueryd.children,对; }否则,如果d.儿童{ isChildofQueryd.children,假; } } } isChildofQueryroot.children,假; 使现代化 函数toggleAlld{ 如果你有孩子{ d、 孩子们。foreachtogleall; 如果d.level<折叠\ U level{ 回来 } 切换; } } //初始化显示以显示几个节点。 根、子、叶; console.logroot updateroot; // }; 功能更新{ 变量节点=根, links=d3.layout.tree.linksnodes; //重新启动强制布局。 武力 .Nodes节点 .linkslinks 1.charge-1000 .linkDistance100 .摩擦力0.5 开始 //更新链接… link=vis.selectAllline.link .datalinks,函数d{return d.target.id;}; //输入任何新链接。 link.enter.insertsvg:line、.node .attr类,链接 .attrx1,函数d{return d.source.x;} .attry1,函数d{return d.source.y;} .attrx2,函数d{return d.target.x;} .attry2,函数d{返回d.target.y;} .stylestroke,函数{ 返回d.target.isQChild?红色:9ecae1;; } //退出所有旧链接。 link.exit.remove; //更新节点… node=vis.selectAllcircle.node .datanodes,函数d{return d.id;} .样式填充、颜色; //输入任何新节点。 node.enter.appendsvg:circle .attr类、节点 .attrcx,函数d{return d.x;} .attracy,函数d{return d.y;} attrr先生,15岁 .样式、填充、颜色 .onclick,鼠标悬停 .callforce.drag; //退出所有旧节点。 node.exit.remove; t=vis.selectAll.t-node .datanodes,函数d{return d.id;} .样式填充、颜色; //输入任何新节点。 t、 enter.appendsvg:text .attrclass,t节点 .attrdx,25px .attry,0 .textfunctiond{返回d.name++d.level?d.level:}; //.callforce.drag; //退出所有旧节点。 t、 退出。移除; } 功能记号{ link.attrx1,函数d{return d.source.x;} .attry1,函数d{return d.source.y;} .attrx2,函数d{return d.target.x;} .attry2,函数d{return d.target.y;}; node.attrcx,函数d{return d.x;} .attracy,函数d{return d.y;}; t、 attrx,函数d{return d.x;} .attry,函数d{return d.y;}; } //叶节点颜色为橙色,包装为白色或蓝色。 函数着色{ 返回d._children?3182bd:d.children?c6dbef:fd8d3c; } //在单击时切换子项。 功能鼠标器{ 如果你有孩子{ d、 _children=d.children; d、 children=null; }否则{ d、 儿童=d.\U儿童; d、 _children=null; } 使现代化 } //返回根目录下所有节点的列表。 函数根{ var节点=[],i=0; 函数递归节点{ 如果node.children node.children.forEachrecurse; 如果!node.id node.id=++i; nodes.pushnode; } recurseroot; 返回节点; } 功能切换{ 如果你有孩子{ d、 _children=d.children; d、 children=null; }否则{ d、 儿童=d.\U儿童; d、 _children=null; } }