免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
javascript – d3.js:使用帶有強(qiáng)制布局的縮放時禁用拖動

我見過這個問題:Is there a way to zoom into a D3 force layout graph?

但是我從我的圖形中得到了一些意想不到的行為 – 在幾次拖動或縮放或平移后所有節(jié)點(diǎn)都凍結(jié)并拖動停止工作.

我創(chuàng)造了這個小提琴:http://jsfiddle.net/7gpweae9/9/

所以要求代碼,所以這里是主要部分:

var svg = d3.select("#graph")    .append("svg:svg")        .attr("width", width)        .attr("height", height)        .attr("pointer-event", "all")    .append("svg:g")        .call(d3.behavior.zoom().on("zoom", zoom))    .append("svg:g");svg.append("svg:rect")    .attr("width", width)    .attr("height", height)    .attr('fill', 'white');var link = svg.selectAll(".link");var node = svg.selectAll(".node");var force = d3.layout.force()    .nodes(nodes)    .links(links)    .size([width,height])    .linkDistance(100)    .charge(-400)    .start();var drag = d3.behavior.drag()    .origin(function(d) { return d; })    .on("dragstart", dragstarted)    .on("drag", dragged)    .on("dragend", dragended);node = svg.selectAll(".node")    .data(nodes)    .enter().append("g")    .attr("class", "node")    .call(drag);node.append("circle")    .attr("class", "node-circle")    .attr("r", 12);node.append("text")    .attr("x", 12)    .attr("y", ".35em")    .text(function(d) { return d.word; });link = svg.selectAll(".link")    .data(links)    .enter().append("line")    .attr("class", "link");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   ")";    });});function zoom() {    svg.attr("transform",        "translate("   d3.event.translate   ")scale("   d3.event.scale   ")");}function dragstarted(d) {    d3.event.sourceEvent.stopPropagation();    d3.select(this).classed("dragging", true);}function dragged(d) {    d3.select(this).attr("x", d.x = d3.event.x).attr("y", d.y = d3.event.y);}function dragended(d) {    d3.select(this).classed("dragging", false);}

也許我錯過了一些東西,我之前從未使用過d3.

UPD:似乎在一段時間后發(fā)生凍結(jié).

解決方法:

我將d3.layout.force()替換為force.drag(),現(xiàn)在它幾乎可以正常工作.

    var nodes;    var links;    prepareData();    var graph = document.querySelectorAll("#graph")[0];    var height = 500;    var width = 500;    var svg = d3.select("#graph").append("svg:svg")            .attr("width", width)            .attr("height", height)            .attr("pointer-event", "all")        .append("svg:g")            .call(d3.behavior.zoom().on("zoom", zoom))        .append("svg:g");    svg.append("svg:rect")        .attr("width", width)        .attr("height", height)        .attr('fill', 'white');    var link = svg.selectAll(".link");    var node = svg.selectAll(".node");    var force = d3.layout.force()        .nodes(nodes)        .links(links)        .size([width,height])        .linkDistance(100)        .charge(-400)        .start();    var drag = force.drag()        .origin(function(d) { return d; })        .on("dragstart", dragstarted)        .on("drag", dragged)    node = svg.selectAll(".node")        .data(nodes)        .enter().append("g")        .attr("class", "node")        .call(drag);    node.append("circle")        .attr("class", "node-circle")        .attr("r", 12);    node.append("text")        .attr("x", 12)        .attr("y", ".35em")        .text(function(d) { return d.word; });    link = svg.selectAll(".link")        .data(links)        .enter().append("line")        .attr("class", "link");    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   ")"; });    });    function zoom() {        svg.attr("transform", "translate("   d3.event.translate   ")scale("   d3.event.scale   ")");    }    function dragstarted(d) {        d3.event.sourceEvent.stopPropagation();    }    function dragged(d) {        d3.select(this).attr("x", d.x = d3.event.x).attr("y", d.y = d3.event.y);    }    function prepareData() {        nodes = [{"index":0,"word":"edit"},{"index":1,"word":"course","sentences":[29859]},{"index":2,"word":"needs","sentences":[29859]},{"index":3,"word":"fit","sentences":[29859]},{"index":4,"word":"slides","sentences":[29859]},{"index":5,"word":"print","sentences":[29859]},{"index":6,"word":"can","sentences":[29859]}];                links = [{"source":0,"target":1},{"source":0,"target":2},{"source":0,"target":3},{"source":0,"target":4},{"source":0,"target":5},{"source":0,"target":6}]    }
svg {    border: 1px solid black;}.link {    stroke: #000;    stroke-width: 1px;}.node-circle {    cursor: move;    fill: #ccc;    stroke: #000;    stroke-width: 2px;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script><body>    <div id="graph"></div></body>
來源:https://www.icode9.com/content-1-292751.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
基于d3.js的組織結(jié)構(gòu)圖實現(xiàn)
D3
An A to Z of extra features for the D3 force layout | Coppelia
可視化工具D3.js教程 入門 (第十三章)—— 樹狀圖
Pie charts labels
D3.js畫思維導(dǎo)圖(轉(zhuǎn))
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服