Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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重复svg';更新数据_Javascript_D3.js_Svg - Fatal编程技术网

Javascript d3重复svg';更新数据

Javascript d3重复svg';更新数据,javascript,d3.js,svg,Javascript,D3.js,Svg,每当用新数据填充我的图形时,就会生成一个新的svg元素。更新模式排序在新生成的svg中添加新的圆时起作用,删除的圆也会被删除。但我不明白为什么它会在数据更改时不断生成新的svg元素 var margin = 20, width = 960, height = 400; var svg = d3.select('#authorities').append('svg') .attr('

每当用新数据填充我的图形时,就会生成一个新的svg元素。更新模式排序在新生成的svg中添加新的圆时起作用,删除的圆也会被删除。但我不明白为什么它会在数据更改时不断生成新的svg元素

        var margin = 20,
            width = 960,
            height = 400;


        var svg = d3.select('#authorities').append('svg')
                .attr('width', width)
                .attr('height', height);

        function update(data) {
            // calculate minimum/maximum for axis
            var y_extent = d3.max(data, function(d){ return d.NumberOfAuthorities}) + 1;
            var x_extent = d3.min(data, function(d){ return d.ReimbursementTimeline}) + 20;

            // accept values between min and max extent
            var x_scale = d3.scale.linear()
                .range([margin, width-margin])
                .domain([0, x_extent]);

            var y_scale = d3.scale.linear()
                .range([height-margin, margin])
                .domain([0, y_extent]);

            var circle = svg.selectAll('circle')
                .data(data, function(d) { return d.Country; });

            circle
                .enter()
                    .append('circle')
                        .attr('cy', function(d){return y_scale(d.NumberOfAuthorities)})
                        .attr('cx', function(d){return x_scale(d.ReimbursementTimeline)})
                        .attr('data-country', function(d){return d.Country})
                        .attr('r', function(d){ return (d.NumberOfAuthorities * d.ReimbursementTimeline)/10});

            circle.exit().remove();
        }

        update(data);

我在你的代码中看不到任何会导致这种情况发生的东西。您是否可以尝试将svg更改为
svg=d3.选择('#权限').选择全部('svg.svgCanvas').数据([0]).输入().追加('svg').属性('class','svgCanvas').属性('width',width.).属性('height',height)基本上,这将确保svg创建行不能创建多个svg。如果问题仍然存在,我认为您必须在其他地方寻找解决方案。是的,正如@JSBob所说,您在上面发布的代码片段中没有任何内容会创建重复的
svg
元素。你能给出一个可复制的例子吗?我在你的代码中看不到任何会导致这种情况发生的东西。您是否可以尝试将svg更改为
svg=d3.选择('#权限').选择全部('svg.svgCanvas').数据([0]).输入().追加('svg').属性('class','svgCanvas').属性('width',width.).属性('height',height)基本上,这将确保svg创建行不能创建多个svg。如果问题仍然存在,我认为您必须在其他地方寻找解决方案。是的,正如@JSBob所说,您在上面发布的代码片段中没有任何内容会创建重复的
svg
元素。你能提供一个可复制的例子吗?