d3에서 텍스트가 수반되는 막대 차트를 업데이트하는 방법은 무엇입니까?

스 팩터

d3에서 더 큰 데이터 시각화의 일부로 막대 차트를 만들고 있습니다. 시각화의 한 부분에서 데이터를 변경할 수 있기를 원하며 모든 차트가 업데이트됩니다. 차트의 단순화 된 버전은 다음과 같습니다.

var dataset = [1, 3, 5, 3, 3];

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

    var g = svg.append("g");
...

이 svg 요소를 사용하여지도, 원 등과 같은 다른 차트를 만듭니다. 막대 차트는 이와 같이 구현됩니다.

 function bars(dataset) {
      var barChart = g.selectAll("rect.bar")
        .data(dataset)
        .enter();

      barChart.append("rect")
        .attr("class", "bar")
        .attr("x", function(d, i) { return i * 30 + 100; })
        .attr("y", function(d) { return (height - 130) - d * 4;})
        .attr("width", 25)
        .attr("height", function(d) { return d * 4; });


       barChart.append("text")
        .text(function(d) { return d; })
        .attr("x", function(d, i) { return i * 30 + 103; })
        .attr("y", function(d) { return (height - 130) - d/10 - 5;})
        .attr("font-family", "sans-serif")
        .attr("font-size", "10px")
        .attr("fill", "darkgray"); 
}

이제 이것은 막대 차트를 잘 렌더링하지만 기능이 있습니다.

...
.on("click", function() {
   ...
   var newdata = [5, 2, 6, 2, 4]; // new values
   g.selectAll("rect.bar").remove();  // This removes the bars
   g.selectAll("text").remove();    // Problem here: All texts are removed
   bars(newdata);
}

.remove () 함수를 사용하여 새로운 값으로 막대 차트를 전환하려고했습니다. 이것은 다른 막대 차트가 없기 때문에 막대 직사각형에서 작동하지만 위에 표시된 것처럼 값 레이블을 제거하려고 할 때 다른 모든 텍스트 요소도 제거되었습니다. 막대와 관련된 텍스트 만 업데이트하는 방법이 있습니까?

리차드 웨스턴 라

텍스트에 클래스를 적용하고 제거 할 클래스 만 선택해 보셨습니까? 예 :

barChart.append("text")
  .attr('class','label')
  .text(function(d) { return d; })

그때

g.selectAll(".label").remove();

덧붙여, 모든 요소의 경우 대신 모든 요소를 제거하는 다음, 사용 간주해야, 업데이트 사이에 삭제되는 enter()exit()기존 요소에 새 데이터를 바인딩 만 변경하는 요소를 제거하기 위해?

다음 과 같이 편집 하십시오.

function bars(dataset) {
  var bar = g.selectAll(".bar").data(dataset);

  bar.exit().remove();

  bar.enter().append("rect").attr("class", "bar");

  bar
    .attr("x", function(d, i) { return i * 30 + 100; })
    .attr("y", function(d) { return (height - 130) - d * 4;})
    .attr("width", 25)
    .attr("height", function(d) { return d * 4; });

  var label = g.selectAll(".label").data(dataset);

  label.exit().remove();

  label.enter().append("text").attr("class", "label");

  label
    .text(function(d) { return d; })
    .attr("x", function(d, i) { return i * 30 + 103; })
    .attr("y", function(d) { return (height - 130) - d/10 - 5;})
    .attr("font-family", "sans-serif")
    .attr("font-size", "10px")
    .attr("fill", "darkgray"); 
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

d3에서 텍스트가 수반되는 막대 차트를 업데이트하는 방법은 무엇입니까?

분류에서Dev

D3에서 막대 차트의 막대에 텍스트 범례를 추가하는 방법은 무엇입니까?

분류에서Dev

텍스트 파일에서 데이터를 가져와 막대 차트에서 다른 레이블을 관리하는 방법은 무엇입니까?

분류에서Dev

Google 막대 차트에서 오른쪽 텍스트를 제거하는 방법은 무엇입니까?

분류에서Dev

반응 + d3 누적 막대 차트를 그룹화하는 방법은 무엇입니까?

분류에서Dev

이 D3 가로 막대 차트를 작동시키는 방법은 무엇입니까?

분류에서Dev

R Plotly : 가로 방향의 반전 된 막대 차트에서 눈금 텍스트의 위치를 변경하는 방법은 무엇입니까?

분류에서Dev

d3에서 미러링 된 x 축 (반전) 막대 차트를 그리는 방법은 무엇입니까?

분류에서Dev

누적 막대 차트에서 두 개의 가로 막대 사이에 텍스트를 삽입하는 방법

분류에서Dev

격자 막대 차트에서 막대 사이의 너비를 줄이는 방법은 무엇입니까?

분류에서Dev

D3 차트에서 확대 사각형 효과를 얻는 방법은 무엇입니까?

분류에서Dev

nvd3 막대 차트 안에 이미지를 추가하는 방법은 무엇입니까?

분류에서Dev

Tableau에서 막대 차트의 두 막대를 결합하는 방법은 무엇입니까?

분류에서Dev

matplotlib에서 의사 3D 막대 차트를 그리는 방법은 무엇입니까?

분류에서Dev

막대 차트에서 캡션 텍스트를 왼쪽 막대와 정렬하는 방법은 무엇입니까?

분류에서Dev

Plotly : 막대 차트에 표시된 "텍스트"값을 합산하는 방법은 무엇입니까?

분류에서Dev

수평 Seaborn 막대 그래프에 텍스트에 주석을 추가하는 방법은 무엇입니까?

분류에서Dev

Excel에서 데이터 요소로 막대 차트를 만드는 방법은 무엇입니까?

분류에서Dev

막대 차트 위에 선을 추가하는 방법은 무엇입니까?

분류에서Dev

dimple.js 막대 차트에 데이터 레이블을 추가하는 방법은 무엇입니까?

분류에서Dev

JFreeChart 라인 차트에 레이블 값과 오류 막대를 추가하는 방법은 무엇입니까?

분류에서Dev

d3 다중 선 차트에서 tsv 파일 대신 json 데이터를 사용하는 방법은 무엇입니까?

분류에서Dev

D3에서 마우스 오버시 막대를 더 크게 만드는 방법은 무엇입니까?

분류에서Dev

ggplot2의 막대 차트에 세 번째 변수를 추가하는 방법은 무엇입니까?

분류에서Dev

R에서 음수 값을 표시하는 막대 차트를 만드는 방법은 무엇입니까?

분류에서Dev

막대 차트에서 오류 막대와 막대 사이의 색상 오버레이를 수행하는 방법은 무엇입니까?

분류에서Dev

Google지도에서 막대 차트를 오버레이하는 방법은 무엇입니까?

분류에서Dev

스크롤 막대를 업데이트하기 위해 contentHeight가 변경되었음을 QtQuick2 TableView에 알리는 방법은 무엇입니까?

분류에서Dev

D3 SVG 사각형 내에있는 SVG 텍스트를 확대하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    d3에서 텍스트가 수반되는 막대 차트를 업데이트하는 방법은 무엇입니까?

  2. 2

    D3에서 막대 차트의 막대에 텍스트 범례를 추가하는 방법은 무엇입니까?

  3. 3

    텍스트 파일에서 데이터를 가져와 막대 차트에서 다른 레이블을 관리하는 방법은 무엇입니까?

  4. 4

    Google 막대 차트에서 오른쪽 텍스트를 제거하는 방법은 무엇입니까?

  5. 5

    반응 + d3 누적 막대 차트를 그룹화하는 방법은 무엇입니까?

  6. 6

    이 D3 가로 막대 차트를 작동시키는 방법은 무엇입니까?

  7. 7

    R Plotly : 가로 방향의 반전 된 막대 차트에서 눈금 텍스트의 위치를 변경하는 방법은 무엇입니까?

  8. 8

    d3에서 미러링 된 x 축 (반전) 막대 차트를 그리는 방법은 무엇입니까?

  9. 9

    누적 막대 차트에서 두 개의 가로 막대 사이에 텍스트를 삽입하는 방법

  10. 10

    격자 막대 차트에서 막대 사이의 너비를 줄이는 방법은 무엇입니까?

  11. 11

    D3 차트에서 확대 사각형 효과를 얻는 방법은 무엇입니까?

  12. 12

    nvd3 막대 차트 안에 이미지를 추가하는 방법은 무엇입니까?

  13. 13

    Tableau에서 막대 차트의 두 막대를 결합하는 방법은 무엇입니까?

  14. 14

    matplotlib에서 의사 3D 막대 차트를 그리는 방법은 무엇입니까?

  15. 15

    막대 차트에서 캡션 텍스트를 왼쪽 막대와 정렬하는 방법은 무엇입니까?

  16. 16

    Plotly : 막대 차트에 표시된 "텍스트"값을 합산하는 방법은 무엇입니까?

  17. 17

    수평 Seaborn 막대 그래프에 텍스트에 주석을 추가하는 방법은 무엇입니까?

  18. 18

    Excel에서 데이터 요소로 막대 차트를 만드는 방법은 무엇입니까?

  19. 19

    막대 차트 위에 선을 추가하는 방법은 무엇입니까?

  20. 20

    dimple.js 막대 차트에 데이터 레이블을 추가하는 방법은 무엇입니까?

  21. 21

    JFreeChart 라인 차트에 레이블 값과 오류 막대를 추가하는 방법은 무엇입니까?

  22. 22

    d3 다중 선 차트에서 tsv 파일 대신 json 데이터를 사용하는 방법은 무엇입니까?

  23. 23

    D3에서 마우스 오버시 막대를 더 크게 만드는 방법은 무엇입니까?

  24. 24

    ggplot2의 막대 차트에 세 번째 변수를 추가하는 방법은 무엇입니까?

  25. 25

    R에서 음수 값을 표시하는 막대 차트를 만드는 방법은 무엇입니까?

  26. 26

    막대 차트에서 오류 막대와 막대 사이의 색상 오버레이를 수행하는 방법은 무엇입니까?

  27. 27

    Google지도에서 막대 차트를 오버레이하는 방법은 무엇입니까?

  28. 28

    스크롤 막대를 업데이트하기 위해 contentHeight가 변경되었음을 QtQuick2 TableView에 알리는 방법은 무엇입니까?

  29. 29

    D3 SVG 사각형 내에있는 SVG 텍스트를 확대하는 방법은 무엇입니까?

뜨겁다태그

보관