동일한 페이지에 두 개의 그래프 D3.js가있을 때 비정상적인 너비

익명

같은 페이지에 두 개의 그래프가있을 때 문제가 있는데 첫 번째 그래프는 정상적인 크기이지만 고정 데이터로 채워진 두 번째 그래프는 비정상적으로 큽니다. 두 그래프가 겹쳐집니다. 이상한 점은 두 번째 그래프의 코드를 사용하면 내 로컬 웹 사이트 테스트에서 작동합니다. 다음은 두 번째 그래프의 코드입니다.

// http://blog.thomsonreuters.com/index.php/mobile-patent-suits-graphic-of-the-day/
    var links = [
        {"source":"TEST111","target":"TEST222","level":"1","life":"1","test":"1","type":"licensing"},
        {"source":"TEST222","target":"TEST3333","level":"2","life":"2","test":"2","type":"licensing"},
        {"source":"TEST3333","target":"TEST4444","level":"3","life":"3","test":"3","type":"licensing"}
    ];

    var nodes = {};

    // Compute the distinct nodes from the links.

    links.forEach(function(link) {
        link.source = nodes[link.source] || (nodes[link.source] = {name: link.source, level:link.level, life:link.life});
        link.target = nodes[link.target] || (nodes[link.target] = {name: link.target, level:link.level, life:link.life});
    });

    var width = 960,
            height = 500;

    var force = d3.layout.force()
            .nodes(d3.values(nodes))
            .links(links)
            .size([width, height])
            .linkDistance(200)
            .charge(-400)
            .on("tick", tick)
            .start();

    var svg = d3.select("body").append("svg")
            .attr("width", width)
            .attr("height", height);

    // Per-type markers, as they don't inherit styles.
    svg.append("defs").selectAll("marker")
            .data(["suit", "licensing", "resolved"])
            .enter().append("marker")
            .attr("id", function(d) { return d; })
            .attr("viewBox", "0 -5 10 10")
            .attr("refX", 15)
            .attr("refY", -1.5)
            .attr("markerWidth", 20)
            .attr("markerHeight", 20)
            .attr("orient", "auto")
            .append("path")
            .attr("d", "M0,-5L10,0L0,5");

    var path = svg.append("g").selectAll("path")
            .data(force.links())
            .enter().append("path")
            .attr("class", function(d) { return "link " + d.type; })
            .attr("marker-end", function(d) { return "url(#" + d.type + ")"; });

    var circle = svg.append("g").selectAll("circle")
            .data(force.nodes())
            .enter().append("circle")
            .attr("r", 20)
            .call(force.drag)
            .style("fill","red")
            .on("click", click);
    function click(d){


    }

    var text = svg.append("g").selectAll("text")
            .data(force.nodes())
            .enter().append("text")
            .attr("x", 8)
            .attr("y", ".31em")
            .text(function(d) { return d.name; });

    // Use elliptical arc path segments to doubly-encode directionality.
    function tick() {
        path.attr("d", linkArc);
        circle.attr("transform", transform);
        text.attr("transform", transform)
    }

    function linkArc(d) {
        var dx = d.target.x - d.source.x,
                dy = d.target.y - d.source.y,
                dr = Math.sqrt(dx * dx + dy * dy);
        return "M" + d.source.x + "," + d.source.y + "A" + dr + "," + dr + " 0 0,1 " + d.target.x + "," + d.target.y;
    }

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

또한 Pluker에서 두 그래프는 벙크이지만 문제는 아닙니다 (로컬에서 작동 함). 원하는 경우 데이터로드를 삭제할 수 있습니다 (34 행). 문제를 확인하는 온라인 Plunker입니다. https://plnkr.co/edit/ewoi6wao97tXAKr1QxIm?p=preview 감사합니다.

thatOneGuy

기본적으로 문제는 단순히 스트로크를주는 것이 아니라 경로를 채우는 것입니다.

따라서 경로를 만들 때 다음을 추가하십시오.

  .style("fill","none").style("stroke","red")

이제 다음과 같이 보입니다.

  var path = svg.append("g").selectAll("path")
            .data(force.links())
            .enter().append("path")
            .attr("class", function(d) { return "link " + d.type; })
            .style("fill","none").style("stroke","red")
            .attr("marker-end", function(d) { return "url(#" + d.type + ")"; });

업데이트 된 plnkr : https://plnkr.co/edit/JgHwC4zyolj0hsg8ib4w?p=preview

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

동일한 그래프에있는 두 개의 상자 그림

분류에서Dev

두 개의 동적 너비 Div를 동일한 라인에 배치하고

분류에서Dev

한 페이지에 c3js 그래프를 두 개 이상 만들 수 없습니다.

분류에서Dev

동일한 그래프 ggplot에 두 개의 회귀 방정식 (또는 그 이상)을 플로팅합니다.

분류에서Dev

D3.js v4를 사용하여 힘 방향 그래프에 대한 비정상적인 확대

분류에서Dev

두 개의 동영상이 페이지에있을 때 videogular API 관리

분류에서Dev

forEach 루프에서 두 개체 사이의 일정한 너비 설정

분류에서Dev

두 개의 동일한 너비 열 (가장 긴 열로 너비가 설정 됨)과 세 번째 열이 나머지 공간을 채 웁니다.

분류에서Dev

자동 레이아웃 제약 조건을 사용하여 프로그래밍 방식으로 높이와 너비가 동일한 4 개의 UIView를 모두 생성

분류에서Dev

Azure Media Player를 사용할 때 두 개의 비디오 (동일한 페이지)를로드하는 데 문제가 있습니다.

분류에서Dev

두 개의 동일한 목록을 비교할 때 assertEquals가 실패합니다.

분류에서Dev

그리드를 사용하여 확장 후 열 너비를 유지하는 두 개의 나란히있는 동일한 너비의 축소 가능한 열을 만드는 CSS / HTML?

분류에서Dev

Inno Setup은 동일한 페이지에서 두 개의 버튼을 비활성화합니다.

분류에서Dev

2 개의 프래그먼트가있는 단일 활동이있을 때 addToBackstack에 프래그먼트 추가

분류에서Dev

직관적 인 비교를 위해 MATLAB에서 동일한 좌표계를 사용하여 두 개의 무 방향 그래프 플로팅

분류에서Dev

동일한 작업, 컨테이너 및 서비스 이름을 가진 두 개의 클러스터?

분류에서Dev

사용자 지정 jQuery를 사용하여 동일한 페이지에 두 개의 캐 러셀이있을 때 발생하는 문제

분류에서Dev

동일한 그래프에서 두 개의 그래픽 표현

분류에서Dev

두 div가 플로팅 될 때 div의 너비 설정 (자동)

분류에서Dev

두 개의 동일한 범위의 너비가 다른 이유는 무엇입니까?

분류에서Dev

비슷한 값을 가진 열에 비슷한 행 값이있을 때 두 개의 다른 데이터 프레임 병합

분류에서Dev

D3 : 확대 할 때 축에 비해 다선 그래프가 약간 벗어남

분류에서Dev

동일한 플롯에 두 개의 변수를 플로팅하려고 할 때 그래프가 다음과 같이 보이는 이유는 무엇입니까?

분류에서Dev

동일한 그래프에 불완전한 데이터가있는 두 개의 데이터 세트 플로팅

분류에서Dev

동일한 인스턴스 그룹이 두 개의 서로 다른 부하 분산기 뒤에있을 때 속도 제한이 작동하는 방식

분류에서Dev

그리드 정렬을 사용하여 한 페이지에 두 개의 그래프를 레이아웃하는 데 도움이 필요합니다.

분류에서Dev

동일한 그래프의 여러 막대 그래프는 동일한 축과 동일한 막대 너비를 유지합니다.

분류에서Dev

너비가 다른 두 개의 동영상을 쌓아

분류에서Dev

동일한 페이지에 두 개의 재정렬 목록 상자가있어 사용자가

Related 관련 기사

  1. 1

    동일한 그래프에있는 두 개의 상자 그림

  2. 2

    두 개의 동적 너비 Div를 동일한 라인에 배치하고

  3. 3

    한 페이지에 c3js 그래프를 두 개 이상 만들 수 없습니다.

  4. 4

    동일한 그래프 ggplot에 두 개의 회귀 방정식 (또는 그 이상)을 플로팅합니다.

  5. 5

    D3.js v4를 사용하여 힘 방향 그래프에 대한 비정상적인 확대

  6. 6

    두 개의 동영상이 페이지에있을 때 videogular API 관리

  7. 7

    forEach 루프에서 두 개체 사이의 일정한 너비 설정

  8. 8

    두 개의 동일한 너비 열 (가장 긴 열로 너비가 설정 됨)과 세 번째 열이 나머지 공간을 채 웁니다.

  9. 9

    자동 레이아웃 제약 조건을 사용하여 프로그래밍 방식으로 높이와 너비가 동일한 4 개의 UIView를 모두 생성

  10. 10

    Azure Media Player를 사용할 때 두 개의 비디오 (동일한 페이지)를로드하는 데 문제가 있습니다.

  11. 11

    두 개의 동일한 목록을 비교할 때 assertEquals가 실패합니다.

  12. 12

    그리드를 사용하여 확장 후 열 너비를 유지하는 두 개의 나란히있는 동일한 너비의 축소 가능한 열을 만드는 CSS / HTML?

  13. 13

    Inno Setup은 동일한 페이지에서 두 개의 버튼을 비활성화합니다.

  14. 14

    2 개의 프래그먼트가있는 단일 활동이있을 때 addToBackstack에 프래그먼트 추가

  15. 15

    직관적 인 비교를 위해 MATLAB에서 동일한 좌표계를 사용하여 두 개의 무 방향 그래프 플로팅

  16. 16

    동일한 작업, 컨테이너 및 서비스 이름을 가진 두 개의 클러스터?

  17. 17

    사용자 지정 jQuery를 사용하여 동일한 페이지에 두 개의 캐 러셀이있을 때 발생하는 문제

  18. 18

    동일한 그래프에서 두 개의 그래픽 표현

  19. 19

    두 div가 플로팅 될 때 div의 너비 설정 (자동)

  20. 20

    두 개의 동일한 범위의 너비가 다른 이유는 무엇입니까?

  21. 21

    비슷한 값을 가진 열에 비슷한 행 값이있을 때 두 개의 다른 데이터 프레임 병합

  22. 22

    D3 : 확대 할 때 축에 비해 다선 그래프가 약간 벗어남

  23. 23

    동일한 플롯에 두 개의 변수를 플로팅하려고 할 때 그래프가 다음과 같이 보이는 이유는 무엇입니까?

  24. 24

    동일한 그래프에 불완전한 데이터가있는 두 개의 데이터 세트 플로팅

  25. 25

    동일한 인스턴스 그룹이 두 개의 서로 다른 부하 분산기 뒤에있을 때 속도 제한이 작동하는 방식

  26. 26

    그리드 정렬을 사용하여 한 페이지에 두 개의 그래프를 레이아웃하는 데 도움이 필요합니다.

  27. 27

    동일한 그래프의 여러 막대 그래프는 동일한 축과 동일한 막대 너비를 유지합니다.

  28. 28

    너비가 다른 두 개의 동영상을 쌓아

  29. 29

    동일한 페이지에 두 개의 재정렬 목록 상자가있어 사용자가

뜨겁다태그

보관