将文本添加到d3条形图中
Adding text to d3 bars
我在向条形图中添加文本时遇到了一些问题。我想在条形图上方显示值,但我不能向每个条形图添加文本。
现在我的dom结构是:
g
rect
rect
rect
我想要什么:
g
g.bar
rect
text
g.bar
rect
text
如何将父对象(g)添加到我的rect中,并将rect和文本作为子对象添加?
我的代码:
bars = svg.selectAll('rect').data(datasource)
# bars enter
bars.enter().append('rect')
.attr('class', (d, i) =>
"rect-" + i)
.attr('x', (d) =>
x(d.age))
.attr('y', height)
.attr('width', x.rangeBand())
.attr('height', 0)
.attr('fill', (d) =>
d.color)
bars
.attr('fill', (d) ->
d.color)
.transition()
.delay(200)
.ease(transition_ease)
.duration(transition_duration)
.attr('y', (d) =>
y(d.value))
.attr('height', (d) =>
height - y(d.value))
bars.exit().remove()
Js文件:http://jsfiddle.net/qjbgtxqu/
遵循Lars的建议(总是一个好建议),这里有一个"模板"来处理元素分组(例如g
下的rect
和text
):
group = svg.selectAll('g')
.data(datasource) # bind data to g elements
group.exit()
.remove();
groupEnter = group.enter()
.append("g") # append g elements
groupEnter
.append("rect") # append rect elements
groupEnter
.append("text") # append text elements
group
... # update g elements, if needed (e.g. add transform, add listeners)
group.select("rect")
.data(datasource)
... # update the rect elements
group.select("text")
.data(datasource)
... # update the text elements
你可以在这里看到Lars对处理组元素的出色解释,以及我最近在这里的简短解释。
相关文章:
- d3.js用按钮更新条形图工具提示
- 添加新数据时D3.JS条形图列偏移量
- d3.js条形图转换无法正常工作
- 从数组在d3中创建条形图时出现问题
- d3.js组条形图不起作用
- 对d3堆叠条形图的数据进行排序
- d3.js条形图未根据单击事件进行更新
- D3:如何更改现有条形图中的数据
- 如何在d3中更新带有附带文本的条形图
- 将两个图形(饼图和条形图)并排对齐::d3-js
- D3.js条形图未显示
- D3.js更新堆叠条形图
- D3 分组条形图
- D3.js条形图:不显示 .text
- 在 D3 中追加堆积条形图和另一个条形图
- 如何在 d3.js 中创建分层条形图
- 条形图 d3.js 的颜色出现问题
- 条形图D3.js错误:<rect>属性
- 水平条形图D3, .txt文件
- 带视图查找器的条形图d3.js