如何在 D3 中的矩形中绘制文本
How do I draw text in a rectangle in D3?
我正在使用这个日历示例:http://bl.ocks.org/KathyZ/c2d4694c953419e0509b,我想将鼠标悬停中显示的值放在每个单元格内,以便它始终可见。我尝试添加这个,我认为它会在每个单元格中打印"!!",但它没有:
rect.append("text")
attr("dx", "+.65em")
.attr("dy", "+.65em")
.attr("opacity", "1")
.text(function(d) { return '!!!'; });
但它什么也没做
正如我在评论中所说,您希望将矩形和文本分组到一个g
元素中。 下面是最简单的示例:
<!DOCTYPE html>
<html>
<head>
<script data-require="d3@3.5.3" data-semver="3.5.3" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.js"></script>
</head>
<body>
<script>
var data = [{
x: 20,
y: 30,
text: "Hi"
}, {
x: 100,
y: 200,
text: "bye"
}];
var svg = d3.select("body")
.append("svg")
.attr("width", 500)
.attr("height", 500);
var g = svg.selectAll('.someClass')
.data(data)
.enter()
.append("g")
.attr("class","someClass")
.attr("transform", function(d) {
return "translate(" + d.x + "," + d.y + ")";
});
g.append("rect")
.attr("width", 40)
.attr("height", 40)
.style("fill", "red");
g.append("text")
.style("fill", "black")
.text(function(d) {
return d.text;
})
</script>
</body>
</html>
对于您正在查看的特定代码.day
成为g
:
var g = svg.selectAll(".day")
.data(function(d) {
return d3.time.days(new Date(d, 0, 1), new Date(d + 1, 0, 1));
})
.enter().append("g")
.attr("class", "day")
.attr("transform", function(d){
var month_padding = 1.2 * cellSize*7 * ((month(d)-1) % (no_months_in_a_row));
var x = day(d) * cellSize + month_padding;
var week_diff = week(d) - week(new Date(year(d), month(d)-1, 1) );
var row_level = Math.ceil(month(d) / (no_months_in_a_row));
var y = (week_diff*cellSize) + row_level*cellSize*8 - cellSize/2 - shift_up;
return "translate(" + x + "," + y + ")";
});
var rect = g.append("rect"))
.attr("width", cellSize)
.attr("height", cellSize)
.datum(format);
g.append("text")
.text("!!!")
.style("fill", "black");
// etc, etc, etc....
text
属性对rect
对象没有任何意义。 您想要添加单独的文本元素: .enter().append("svg:text")
然后 .text(function(d) { return '!!!' });
您可以相应地设置文本元素的样式。
相关文章:
- 将文本工具添加到绘制应用程序HTML5画布
- 在html5画布中将文本绘制为图像
- 画布文本不是在图像上绘制的
- 如何在D3 SVG上绘制文本,如果它's的边界框符合某些标准
- 使用javascript绘制多个以数组元素为文本中心的圆
- 如何在拉斐尔.js中绘制文本框
- HTML5 绘制位于顶部的文本
- 在 HTML5 中使用 Canvas Kinetic 绘制许多文本并进行编辑
- 动态读取属性文件并在 javascript 中绘制文本框
- 如何在 D3 中的矩形中绘制文本
- 使用Raphael.js高效绘制文本
- 如何在画布上绘制文本,该文本遵循使用二次曲线方法绘制的二次曲线
- 使用d3.js在svg路径元素上绘制文本
- 在谷歌地图上绘制文本
- 如何在饼状图上正确地绘制文本
- 如何在画布内绘制文本框
- 在画布上绘制文本
- 在Chrome中绘制文本gotchas
- 通过onload在画布上绘制文本时,文本有颗粒状/模糊
- Javascript,在
上绘制文本窗口