Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 values = [ {label: 'Label 1', values: [8, 2, 5, 9, 3, 6]}, {label: 'Label 2', values: [5, 4, 3, 4, 1, 0]}, {label: 'Label 3', values: [3, 8, 3, 9, 0, 1]}, {label: 'Label 4', values: [1, 6, 3, 9, 3, 6]}

我有一个数据集,如下所示:

    var values = [
      {label: 'Label 1', values: [8, 2, 5, 9, 3, 6]},
      {label: 'Label 2', values: [5, 4, 3, 4, 1, 0]},
      {label: 'Label 3', values: [3, 8, 3, 9, 0, 1]},
      {label: 'Label 4', values: [1, 6, 3, 9, 3, 6]}
    ]
我已经用这些数据制作了一个堆叠条形图,所以现在我有4个区域,每个区域都有一个标签,并且分别有一组堆叠条形图

我成功地使这段代码附加了4个区域作为其余视觉效果的容器:

    barElement = barsArea
      .selectAll('.bar-element')
      .data(values)
      .enter()
      .append('g')
      .attr({
        class: 'bar-element'
      });
但现在,首先我需要为每个区域添加标签,然后为每个区域添加堆叠的条容器和g元素

我现在要做的是:

    barElement.select('text').remove()

    var barLabel = barElement
        .append('text')
        .attr({
          class: 'bar-label'
        })
        .text(function (d, i) {
          return d.label
        })
      ;
这看起来不太酷,因为我每次更新图表时都必须手动删除它们。 与堆叠钢筋容器g元素相同的故事。如果我只运行.selectg.stacked-bar-container,它将不起作用,因为第一次运行时没有这样的元素

在本例中,建议这样做。select.data.enter.append由于某种原因在我的案例中似乎不起作用


所以,问题是,我如何在一个节点中找到一个元素,并在收到新数据时更新它,否则先添加这个元素,然后在第一次运行时更新?

我昨天将此链接到另一篇文章,我认为它100%适用于您的文章。输入、更新、退出是更新数据的组成部分


这是一个非常好的例子。

也许我错过了这一部分,但为什么需要手动删除文本?因为如果我添加而不删除,每次更新都会添加多个文本元素。恐怕我做得不对,如果做得好,我就不必做这些变通。但是barElement只包含您正在使用的新数据。输入,否?似乎我需要检查整个代码以使其正确,如果问题仍然存在,我将在得到更好的解决方案后尽快返回。谢谢