当前位置: 首页 > 知识库问答 >
问题:

D3向SVG矩形追加文本

安经纶
2023-03-14

我想把html附加到D3中的矩形上,给我一个多行工具提示。底部是如何添加一个矩形,这可能是问题的一部分。最上面是应该在我的世界里工作的代码

 newRect.().html(" <textArea font-family=Verdana font-size=20 fill=blue > Test " + "</br>" + "Test2 </textArea>");

这会将文本字段插入SVG,但它只是不显示:
html:

<rect id="rectLabel" x="490" y="674" width="130" height="160" fill="red">
    <textarea fill="blue" font-size="20" font-family="Verdana"> Test </br>Test2 </textarea>
</rect>

我有一个鼠标移过函数,它运行以下内容:

    newRect = svg.append("rect")
    .attr("x", xCor)
    .attr("y", yCor)
    .attr("width", 130)
    .attr("height", 160)
    .attr("fill", "red")
    .attr("id", "rectLabel");

我想我应该这么做,但这不起作用。它只是删除了我试图追加到的g.node。

    newRect = $(this).enter().append("rect")
    .attr("x", xCor)
    .attr("y", yCor)
    .attr("width", 130)
    .attr("height", 160)
    .attr("fill", "red")
    .attr("id", "rectLabel");

问题:为什么我的文字没有出现?我试过.html,.textarea。我想要一个多行标签,所以我不认为。文本将工作正确?另外,我应该如何添加矩形呢?

共有2个答案

萧献
2023-03-14

您尝试过SVG文本元素吗?

.append("text").text(function(d, i) { return d[whichevernode];})

rect元素不允许在其中包含文本元素。它只允许描述性元素( </code)和动画元素( set> )

将text元素追加为同级元素并进行定位。

更新

使用g分组,像这样的东西怎么样?小提琴

当然,您可以将逻辑移动到一个CSS类中,您可以追加到这个类中,也可以从组中删除这个类(this.parentnode)

申屠昌胤
2023-03-14

rect不能包含text元素。相反,使用文本和矩形的位置转换g元素,然后将矩形和文本追加到它:

var bar = chart.selectAll("g")
    .data(data)
  .enter().append("g")
    .attr("transform", function(d, i) { return "translate(0," + i * barHeight + ")"; });

bar.append("rect")
    .attr("width", x)
    .attr("height", barHeight - 1);

bar.append("text")
    .attr("x", function(d) { return x(d) - 3; })
    .attr("y", barHeight / 2)
    .attr("dy", ".35em")
    .text(function(d) { return d; });

http://bl.ocks.org/mbostock/7341714

多行标签也有点棘手,你可能想看看这个换行功能。

 类似资料:
  • SVG Shapes SVG有一些预定义的形状元素,可被开发者使用和操作: 矩形 <rect> 圆形 <circle> 椭圆 <ellipse> 线 <line> 折线 <polyline> 多边形 <polygon> 路径 <path> 下面的章节会为您讲解这些元素,首先从矩形元素开始。 SVG 矩形 - <rect> 实例 1 <rect> 标签可用来创建矩形,以及矩形的变种: 下面是SVG代

  • SVG 形状(Shapes) 就像画板应用一样,SVG为开发者提供了一些预定义的形状元素,以便于快速应用: 方形 <rect> 圆形 <circle> 椭圆 <ellipse> 线条 <line> 折线 <polyline> 多边形 <polygon> 路径 <path> 后续章节我们将逐个介绍这些图形元素,先从方形及其一些变体开始。 由于SVG代码可读性较高,我们就使用实例代码结合代码解释的方式

  • 尝试在SVG文本周围设置边框,但我得到的结果不一样。 HTML:(使用mute类) CSS:

  • 主要内容:在PDF文档中创建框, 示例本章将演示如何在PDF文档的页面中创建颜色框。 在PDF文档中创建框 使用类的方法在PDF页面中添加矩形框。 以下是在PDF文档的页面中创建矩形形状的步骤。 第2步:获取页面对象 需要使用类的方法检索要添加矩形的所需页面的对象。 对于此方法,传递要添加矩形的页面的索引。 第3步:准备内容流 使用类的对象来插入各种数据元素。 因此,需要将文档对象和页面对象传递给此类的构造函数,通过传递在前面的步骤中

  • 本文向大家介绍SVG 矩阵,包括了SVG 矩阵的使用技巧和注意事项,需要的朋友参考一下 示例 将转换矩阵应用于多边形: 每个点(x,y)都将通过以下方式进行转换matrix(a, b, c, d, e, f): 结果等于            

  • 我有一系列svg矩形(使用D3.js),我想在mouseover上显示一条消息,该消息应该被一个充当背景的框包围。它们应该彼此完全对齐,并与矩形(在顶部和居中)完全对齐。做这件事最好的方法是什么? 我尝试使用“x”、“y”、“width”和“height”属性添加一个svg文本,然后预置一个svg rect。问题是文本的参考点在中间(因为我希望它居中对齐,所以我使用了),但对于矩形,它是左上的坐标