D3学习:力导向图布局
来源:互联网 发布:那些年流行的网络歌曲 编辑:程序博客网 时间:2024/05/17 04:25
今天一早上起来复习了会儿算法的NPC证明,好烧脑,本宝宝现在都有点而力不从心了~
到图书馆学D3,雷打不动,即使有考试也不放弃码代码~~
力导向图,之前学过一个比较复杂的,那时候按照一个demo写完了累的本宝宝半死也没怎么理解其中内涵,这回再看,感觉好多了,还是得循序渐进啊~
<!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8"> <title>力导向图</title> <script type="text/javascript" src="../d3/d3.min.js"></script> </head> <body> <script type="text/javascript"> 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 width = 400, height = 400; var svg = d3.select("body") .append("svg") .attr("width", width) .attr("height", height); var force = d3.layout.force() .nodes(nodes) .links(edges) .size([width,height]) .linkDistance(150)//指定连线长度 .charge([-300]);//指定相互之间的作用力 //负电荷数 //上面的语句定义了力布局方式 //并用力布局的方式使得原始数据变成了画力导向图 //所需要的数据格式 force.start();//开始作用力 console.log(nodes); console.log(edges); //看控制台输出的数据,已经发生了变化 var color = d3.scale.category20(); //添加节点 var svg_nodes = svg.selectAll("circle") .data(nodes) .enter() .append("circle") .attr("r", 20) .attr("fill", function (d, i) {return color(i);}) .call(force.drag); //call使得节点能够被拖拽 //添加连线 var svg_edges = svg.selectAll("line") .data(edges) .enter() .append("line") .attr("stroke","#ccc") .attr("stroke-width",1); //添加文字 var svg_texts = svg.selectAll("text") .data(nodes) .enter() .append("text") .attr("fill","orange") .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;}); }) //tick:滴答滴答,鼠标触发事件 </script> </body></html>
0 0
- D3学习:力导向图布局
- d3 力导向图
- D3力导向图及树状布局变换
- d3画力导向图
- d3.js之力导向图
- D3 笔记十:力导向图
- D3 force(力导向图)研究之二:如何布局超过十万个节点的图谱
- D3力导向地图制作
- 【d3.js教程06】force 力导向图
- D3.js实现力导向图(Dray和Zoom)
- D3系列第三弹——绘制力导向图
- D3学习:集群布局
- 【D3.js数据可视化系列教程】(二十四)--力导向图
- 【D3.js数据可视化系列教程】(三十)--力导向图之带文字
- 【D3.js数据可视化系列教程】(三十一)-- 力导向图之分子式
- 【D3.js数据可视化系列教程】(三十二)-- 力导向图之弧形箭头连线
- 【D3.js数据可视化系列教程】(三十三)-- 力导向图之图片和提示
- 数据可视化 D3.js实现力导向图之二(node带文字说明和提示)
- Eclipse中配置ServiceMix的远程调试模式
- **静态工厂**
- 为什么选择dubbo?
- LinkedList和ArrayList的区别
- 时间戳 计算 工作时间
- D3学习:力导向图布局
- Javascript对DOM的操作
- 退役
- 软件项目版本号的命名规则及格式
- Maven构建成功后复制jar包到指定位置插件
- Android 自定义九宫格锁
- android IBeacon 开发(一)搜索IBeacon基站
- (一)Git的基本概念
- fragment 向另一个activity传值并关闭当前activity