隨筆-124  評論-194  文章-0  trackbacks-0
          EXTJS和D3都很強大,不解釋了,把D3繪的圖直接放到一個EXT的TAB里,直接上圖上代碼:


          代碼中的D3例子來自:
          https://github.com/mbostock/d3/wiki/Force-Layout
          可用于繪制拓撲結構圖.
          Ext.define('EB.view.content.SingleView', {
              extend : 'Ext.panel.Panel',
              alias : 'widget.singleview',

              layout : 'fit',

              title : 'single view',

              initComponent : function() {
                  this.callParent(arguments);
              },

              onRender : function() {
                  var me = this;

                  me.doc = Ext.getDoc();
                  me.callParent(arguments);

                  me.drawMap();
              },

              drawMap : function() {
                  var width = 960, height = 500

                  var target = d3.select("#" + this.id+"-body");

                  var svg = target.append("svg").attr("width", width).attr("height",
                          height);

                  var force = d3.layout.force().gravity(.05).distance(100).charge(-100)
                          .size([width, height]);

                          // get from: https://github.com/mbostock/d3/wiki/Force-Layout
                          
          // example: force-directed images and labels
                  d3.json("graph.json", function(json) {
                      force.nodes(json.nodes).links(json.links).start();

                      var link = svg.selectAll(".link").data(json.links).enter()
                              .append("line").attr("class", "link");

                      var node = svg.selectAll(".node").data(json.nodes).enter()
                              .append("g").attr("class", "node").call(force.drag);

                      node.append("image").attr("xlink:href",
                              "https://github.com/favicon.ico").attr("x", -8).attr("y",
                              -8).attr("width", 16).attr("height", 16);

                      node.append("text").attr("dx", 12).attr("dy", ".35em").text(
                              function(d) {
                                  return d.name
                              });

                      force.on("tick", function() {
                                  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;
                                          });

                                  node.attr("transform", function(d) {
                                              return "translate(" + d.x + "," + d.y + ")";
                                          });
                              });
                  });
              }

          });
          posted on 2012-09-27 07:38 我愛佳娃 閱讀(4483) 評論(0)  編輯  收藏 所屬分類: javascript
          主站蜘蛛池模板: 瑞金市| 荣昌县| 芦溪县| 汉源县| 安吉县| 长武县| 闻喜县| 恩施市| 达尔| 清水河县| 浮梁县| 岱山县| 怀化市| 米脂县| 长宁县| 普宁市| 高州市| 新巴尔虎左旗| 枝江市| 西华县| 铁岭市| 景谷| 镇雄县| 许昌县| 二连浩特市| 瓦房店市| 云阳县| 喀喇沁旗| 江口县| 康保县| 永兴县| 于田县| 三门县| 原阳县| 那曲县| 汉中市| 平陆县| 手游| 曲阳县| 霸州市| 靖宇县|