使用D3在节点中选择并附加单个元素
Select and append a single element in a node with D3
我有一个数据集,看起来像这样:
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
元素的同一层。如果我只是运行.select(g.stacked-bars-container)
,它将不起作用,因为在第一次运行时并没有这样的元素。
在这个问题中,建议使用.select().data().enter().append()
,由于某种原因,它在我的情况下似乎不起作用。
所以,问题是,我如何在节点中找到一个元素,并在新数据到来时更新它,否则先添加这个元素,然后在第一次运行时更新?
我昨天将此链接到另一篇帖子,我认为它也100%适用于您的帖子。输入、更新、退出是更新数据不可或缺的一部分。
http://bost.ocks.org/mike/join/它有一个非常好的例子。
相关文章:
- 如何创建具有单个元素或元素数组的数组
- 扩展验证.js并验证单个元素
- <noscript>标记单个元素或类似的东西
- 在javascript中阻止文档执行默认操作时,在单个元素中使用默认事件
- 从单个元素中Jquery关闭事件
- 为什么 .data() 适用于一组元素,但不适用于单个元素
- 将 CSS 类添加到数组中的单个元素
- 当文档中的单个元素准备就绪时触发事件的最佳方法
- 将多种颜色应用于谷歌图表中的单个元素
- jQuery each - 绑定到所有元素而不是单个元素
- 当无法使用 $(this) 时,目标单个元素
- 如何将样式应用于类的单个元素,同时从同一类的前一个元素中删除样式
- 单个元素的多个单击处理程序
- 动态挖空模板仅接受单个元素而不是数组
- 在对象中的单个元素上使用jQuery .append
- 当来自不同页面时,如何显示/隐藏单个元素
- 在单个元素上使用fancybox时,如何对其进行分组
- 在单个元素上跟踪多个GA事件
- 当通过jQuery插入DOM时,什么时候应该将HTML字符串包装在单个元素中
- AngularJS-如何从嵌套数组中获取单个元素