zoukankan      html  css  js  c++  java
  • D3.js:力导向图

    var nodes = [   { name: "桂林" }, { name: "广州" },
                    { name: "厦门" }, { name: "杭州" },
                    { name: "上海" }, { name: "青岛" },
                    { name: "天津" }];
    
    var edges = [   { source : 0 , target: 1 } , { source : 0 , target: 2 } ,
                    { source : 0 , target: 3 } , { source : 1 , target: 4 } ,
                    { source : 1 , target: 5 } , { source : 1 , target: 6 }];
    
    var force = d3.layout.force()
        .nodes(nodes) //指定节点数组
        .links(edges) //指定连线数组
          .size([width,height]) //指定作用域范围
          .linkDistance(150) //指定连线长度
          .charge([-400]); //相互之间的作用力
    force.start();
    
    //添加连线 
    var svg_edges = svg.selectAll("line")
         .data(edges)
        .enter()
         .append("line")
         .style("stroke","#ccc")
         .style("stroke-width",1);
    
    var color = d3.scale.category20();
    
    //添加节点 
    var svg_nodes = svg.selectAll("circle")
         .data(nodes)
         .enter()
        .append("circle")
        .attr("r",20)
        .style("fill",function(d,i){
          return color(i);
        })
        .call(force.drag);  //使得节点能够拖动
    
    //添加描述节点的文字
    var svg_texts = svg.selectAll("text")
         .data(nodes)
         .enter()
        .append("text")
        .style("fill", "black")
         .attr("dx", 20)
        .attr("dy", 8)
         .text(function(d){
            return d.name;
         });
    force.on("tick", function(){ //对于每一个时间间隔
    //更新连线坐标
    svg_edges.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; });
    
    //更新节点坐标
    svg_nodes.attr("cx",function(d){ return d.x; })
        .attr("cy",function(d){ return d.y; });
    
    //更新文字坐标
    svg_texts.attr("x", function(d){ return d.x; })
       .attr("y", function(d){ return d.y; });
    });

    页面效果:

  • 相关阅读:
    MySQL与Redis结合方案
    Linux系统如何监控服务器硬件、操作系统、应用服务和业务
    【MySQL】MySQL复制之防崩溃从节点
    Linux系统vim编辑器换行至文件的行首及行尾操作
    Xtrabackup远程备份
    innodb_force_recovery参数分析
    Oracle异构平台迁移利器之XTTS(使用rman方式)
    ES6基础语法
    读郭老师推荐书籍--《原则》
    PhpStorm 的基本应用
  • 原文地址:https://www.cnblogs.com/koto/p/5983693.html
Copyright © 2011-2022 走看看