d3.js NVD3,在加载新图表之前清除SVG

tzxcd3kk  于 2022-11-12  发布在  其他
关注(0)|答案(7)|浏览(193)

我在同一个svg中调用了几个不同的NVD3图表。我使用按钮来调用函数,每个按钮都包含一个使用自己数据的新图表。
有没有办法清除我的单个svg而不删除它?我希望按下一个按钮来调用我的图表,但在新图表加载之前清除svg。
当使用图表类型时,这不是问题...例如,调用两个multibarhorizontal图表,只是更新形状,这是好的。问题是加载两个不同的图表,如折线图和条形图。
先谢谢你

EDIT-答案必须是类似于d 3.select("svg").remove()的内容,但这只是删除了SVG。我只想清除它。

dtcbnfnu

dtcbnfnu1#

您可以使用"svg > *"选择器选择SVG下面的所有元素,即要删除所有这些元素,请执行以下操作

  1. d3.selectAll("svg > *").remove();
rjjhvcjd

rjjhvcjd2#

这对我很有效:

  1. var svg = d3.select("svg");
  2. svg.selectAll("*").remove();
fdbelqdn

fdbelqdn3#

如果您正在开发一个包含多个显示不同d3图表的小部件的 Jmeter 板,请使用以下命令

  1. d3.selectAll("#d3-donutChart > *").remove();

这将只清除特定的图表,而不是网页中的所有svg。
在订阅Angular 2中的数据后立即添加此行。

uelo1irk

uelo1irk4#

这是对我有用的。
(“svg”).删除();

gzjq41n4

gzjq41n45#

在创建按钮后,将此代码

  1. $("svg").remove()
cld4siwp

cld4siwp6#

这就是你所需要的。

  1. svg.text('')
klr1opcd

klr1opcd7#

  1. For Re-Drawing the D3 Graphs by clearing the existing sketch and updating.
  2. <body>
  3. ...
  4. <input name="reDraw" type="button" value="Re-Draw" onclick="reDraw('data2.csv')" />
  5. ...
  6. <script>
  7. var margin = {top: 20, right: 20, bottom: 30, left: 40},
  8. width = 960 - margin.left - margin.right,
  9. height = 500 - margin.top - margin.bottom;
  10. var x0 = d3.scale.ordinal()
  11. .rangeRoundBands([0, width], .1);
  12. var x1 = d3.scale.ordinal();
  13. var y = d3.scale.linear()
  14. .range([height, 0]);
  15. var color = d3.scale.ordinal().range(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56", "#d0743c", "#ff8c00"]);
  16. var xAxis = d3.svg.axis()
  17. .scale(x0)
  18. .orient("bottom");
  19. var yAxis = d3.svg.axis()
  20. .scale(y)
  21. .orient("left")
  22. .tickFormat(d3.format(".2s"));
  23. //d3.select('#chart svg')
  24. var svg = d3.select("body").append("svg")
  25. .attr("width", width + margin.left + margin.right)
  26. .attr("height", height + margin.top + margin.bottom)
  27. .append("g")
  28. .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
  29. var updateData = function(getData){
  30. d3.selectAll('svg > g > *').remove();
  31. d3.csv(getData, function(error, data) {
  32. if (error) throw error;
  33. var ageNames = d3.keys(data[0]).filter(function(key) { return key !== "State"; });
  34. data.forEach(function(d) {
  35. d.ages = ageNames.map(function(name) { return {name: name, value: +d[name]}; });
  36. });
  37. x0.domain(data.map(function(d) { return d.State; }));
  38. x1.domain(ageNames).rangeRoundBands([0, x0.rangeBand()]);
  39. y.domain([0, d3.max(data, function(d) { return d3.max(d.ages, function(d) { return d.value; }); })]);
  40. svg.append("g")
  41. .attr("class", "x axis")
  42. .attr("transform", "translate(0," + height + ")")
  43. .call(xAxis);
  44. svg.append("g")
  45. .attr("class", "y axis")
  46. .call(yAxis)
  47. .append("text")
  48. .attr("transform", "rotate(-90)")
  49. .attr("y", 6)
  50. .attr("dy", ".71em")
  51. .style("text-anchor", "end")
  52. .text("Population");
  53. var state = svg.selectAll(".state")
  54. .data(data)
  55. .enter().append("g")
  56. .attr("class", "state")
  57. .attr("transform", function(d) { return "translate(" + x0(d.State) + ",0)"; });
  58. state.selectAll("rect")
  59. .data(function(d) { return d.ages; })
  60. .enter().append("rect")
  61. .attr("width", x1.rangeBand())
  62. .attr("x", function(d) { return x1(d.name); })
  63. .attr("y", function(d) { return y(d.value); })
  64. .attr("height", function(d) { return height - y(d.value); })
  65. .style("fill", function(d) { return color(d.name); });
  66. var legend = svg.selectAll(".legend")
  67. .data(ageNames.slice().reverse())
  68. .enter().append("g")
  69. .attr("class", "legend")
  70. .attr("transform", function(d, i) { return "translate(0," + i * 20 + ")"; });
  71. legend.append("rect")
  72. .attr("x", width - 18)
  73. .attr("width", 18)
  74. .attr("height", 18)
  75. .style("fill", color);
  76. legend.append("text")
  77. .attr("x", width - 24)
  78. .attr("y", 9)
  79. .attr("dy", ".35em")
  80. .style("text-anchor", "end")
  81. .text(function(d) { return d; });
  82. });
  83. }
  84. updateData('data1.csv');
  85. </script>
  86. </body>
展开查看全部

相关问题