Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3:删除元素_Javascript_D3.js - Fatal编程技术网

Javascript D3:删除元素

Javascript D3:删除元素,javascript,d3.js,Javascript,D3.js,我有一个条形图,可以创建正条形图和负条形图。我稍后会尝试删除负条,但现在,即使在添加了负条之后,如果我尝试立即删除负条,它们仍然会出现 var margin = {top: 30, right: 10, bottom: 10, left: 10}, width = 750 - margin.left - margin.right, height = data.length * 20 //500 - margin.top - margin.bottom; var x = d3.s

我有一个条形图,可以创建正条形图和负条形图。我稍后会尝试删除负条,但现在,即使在添加了负条之后,如果我尝试立即删除负条,它们仍然会出现

var margin = {top: 30, right: 10, bottom: 10, left: 10},
    width = 750 - margin.left - margin.right,
    height = data.length * 20 //500 - margin.top - margin.bottom;

var x = d3.scale.linear()
    .range([0, width*.85])

//chart1.x =x
//chart1.y = y

var y = d3.scale.ordinal()
    .rangeRoundBands([0, height], 0);

var xAxis = d3.svg.axis()
    .scale(x)
    .orient("top");

var svg = d3.select("#barchart").append("svg")
    .attr("width", width + margin.left + margin.right)
    .attr("height", height + margin.top + margin.bottom)
  .append("g")
    .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

//d3.tsv("data.tsv", type, function(error, data) {
  x.domain(d3.extent(data, function(d) { return +d.netdonations_over_population_to_gdppercap_percentage; })).nice();
  y.domain(data.map(function(d) { return d.name; }));

  bar = svg.selectAll(".bar")
      .data(data)
    .enter().append("rect")
      .attr("class", function(d) { return +d.netdonations_over_population_to_gdppercap_percentage < 0 ? "bar negative" : "bar positive"; })
      .attr("x", function(d) { return x(Math.min(0, +d.netdonations_over_population_to_gdppercap_percentage)); })
      .attr("y", function(d) { return y(d.name); })
      .attr("width", function(d) { return Math.abs(x(+d.netdonations_over_population_to_gdppercap_percentage) - x(0)); })
      .attr("height", y.rangeBand()).style("stroke","white")

bar.selectAll(".negative").data([]).exit().remove()

尝试将selectAll语句切换为:

svg.selectAll("rect.negative").remove()
这应该选择带有class
negative
的标签
rect
,尽管我不能100%确定它会找到它,因为
attr
class
被写为
条带负数
。如果它不起作用,我可能会尝试将您的
属性更改为类似
负条
或只是


如果这没有用,很抱歉

谢谢。这也起到了作用:svg.selectAll(“.bar.negative”).data([]).exit().remove()您确实需要一个空的数据选择吗?你不能直接把它们取下来吗?svg.selectAll(“rect.negative”).remove()
svg.selectAll("rect.negative").remove()