我怎样才能在D3中的矩形上写一段文字呢
How can I write a piece of text over my rectangles in D3?
我使用以下代码创建了几个长矩形:
如何在每个矩形上方书写文本?我试着在输入选择后附加"文本",也试着在所有代码后的"ttest"上附加"文本",但对我来说不可行。
非常感谢任何帮助!var ttest=SVGTTest.全选("rect").data(ttestArray);
ttest.exit()
.style("opacity", TTEST_OPACITY)
.transition()
.duration(ANIMATION_TIME_MODIFIER*300)
.style("opacity", 0)
.remove();
ttest.enter()
.append("rect");
ttest
.attr("x", function(d, i){
var startIndex = (ttestArray[i][0]+1)*100;
return xScale(startIndex);
})
.attr("y", function(d, i){
return yScale(ttestArray[i][3]);
})
.attr("width", function(d, i){
var endIndex = (ttestArray[i][1]-ttestArray[i][0])*100;
return xScale(endIndex);
})
.attr("height", 3)
.style("opacity", 0)
.transition().duration(ANIMATION_TIME_MODIFIER*500)
.style("opacity", TTEST_OPACITY)
.style("fill", "#000000");
您需要分别追加两个元素(svg rect
和text
元素)。一种常见的处理方法是绑定一个创建svg g
组元素的回车选择,然后使用该选择分别附加rect
和text
元素:
var rects = d3.selectAll("g.rectGroup")
.data(data);
var rectEnter = rects.enter().append("g")
.attr("class", "rectGroup");
rectEnter.append("rect").attr({..});
rectEnter.append("text").attr({..});
rects.exit().remove();
不能直接将文本写入rect元素。我建议您创建一个group元素,并在其中添加矩形和文本元素。然后你也可以直接在该组上使用鼠标事件(如果你愿意的话),就像你在这个小提琴中看到的那样:
http://jsfiddle.net/fbwdajwm/1/
所以基本上你添加了这样的goup元素:
var svgg = svg.selectAll("g.myGroup")
.data(myData)
.enter()
.append("g");
然后你就不能像这样再次访问你的数据了:
svgg.each(function (d, i) {
selection = d3.select(this);
selection.append("rect")
// ...
});
编辑:
好吧,我读了你给亨利的评论,并决定更新小提琴,使其符合你给他的描述。请参阅此处:
http://jsfiddle.net/fbwdajwm/4/
那我做了什么?每当点击按钮时,我都会更新数据,然后调用一个函数来更新矩形(包括它们的文本)。现在,重要的是,在应用新数据时,要真正选择之前创建的组。我通过一个类和选择器'g.myGroup'
来实现这一点。
相关文章:
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- 收集一段时间内的EMG数据.建议JS
- 在一段时间内切换文本
- 如何停止字幕文本一段时间,然后继续
- HTTP服务器在一段时间后停止(Node.js)
- Hammer.js过了一段时间就停止工作了
- 在经过一段时间或满足条件后运行代码
- Meteor-在一段时间内解锁模板(按日期)
- 画布在一段时间后开始滞后
- 如何使用jquery/js/css逐步突出显示一段文本
- JS-在一段时间后水平移动图像
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- 表单提交在一段时间循环PHP,jquery
- 一段时间后生成回发
- 一段时间后自动点击提交按钮
- 将字符串作为一段 HTML/javascript 代码执行
- 如何每隔一段时间更改我网站的背景颜色
- 我怎样才能在D3中的矩形上写一段文字呢
- 删除一段文字
- 在圆圈下面画一段文字