Javascript 在D3中,如何将文本放置在已经附加了文本的形状中?
我目前正在做下面的工作,我想把文本放在弧内,类似于。但是,每当我尝试向任何内容添加文本时,文本都不会显示。我看过开发人员控制台,它似乎在那里,但它不会在屏幕上显示。我使用了第一个示例中提供的所有代码,但我尝试在arc元素中添加以下代码:Javascript 在D3中,如何将文本放置在已经附加了文本的形状中?,javascript,jquery,html,css,d3.js,Javascript,Jquery,Html,Css,D3.js,我目前正在做下面的工作,我想把文本放在弧内,类似于。但是,每当我尝试向任何内容添加文本时,文本都不会显示。我看过开发人员控制台,它似乎在那里,但它不会在屏幕上显示。我使用了第一个示例中提供的所有代码,但我尝试在arc元素中添加以下代码: ("the d3 element").enter().append("svg:text").text("???") ("the d3 element").enter().append("text").text("???") ("the d3 element"
("the d3 element").enter().append("svg:text").text("???")
("the d3 element").enter().append("text").text("???")
("the d3 element").append("svg:text").text("???")
("the d3 element").append("text").text("???")
除了停止一些样式的更改外,似乎无论我把这些代码放在哪里,它都不想对我起作用。我会感激你的帮助 每当我尝试向任何内容追加文本时,文本都不会显示:文本不能追加到大多数svg元素。可以将文本附加到svg本身或g,但不能将其附加到路径、矩形、圆形等 处理此问题的最常用方法之一是使用g元素放置形状和文本,同时将数据绑定到g元素。在G上使用变换将转换形状和文本-对于圆和矩形之类的东西非常有用 有几种其他方法可用于在svg元素上覆盖文本:
("the d3 element").enter().append("svg:text").text("???")
("the d3 element").enter().append("text").text("???")
("the d3 element").append("svg:text").text("???")
("the d3 element").append("text").text("???")
使用元素的定位属性设置文本的x和y属性,以便可以将文本放置在元素顶部。
使用路径作为文本路径来放置文本,如示例所示
例如,使用诸如圆弧或地质路径的质心等实用方法
查找图元的边界框并使用此信息放置图元。
这些选项有助于放置,但不能确保文本位于形状的边界内-这是不同的复杂性
对于圆弧,一种选择是使用圆形路径作为文本路径,其中圆的半径介于圆弧的内半径和外半径之间,然后使用反映起始角度的文本偏移放置文本,或者为每段文本绘制一条圆弧。一般机制如下所示。注意,它不能使用圆形元素,因为svg文本路径必须遵循以下路径:
var svg=d3.selectbody
.appendsvg
.身高,400
.宽度,400
.attransform,translate200200
var arc=d3.arc
.内半径50
.户外旅行100
.startAngle0
.2;
var arcText=d3.arc
.内半径75
.户外旅行75
.startAngle0
.2;
var arc=svg.appendpath
.attrd,arc
.艾特菲尔,钢蓝
var textPath=svg.appendpath
.attrd,arcText
.attrid,textpath
.没有
.黑色;
var text=svg.appendtext
.appendtextPath
.attrxlink:href,textpath
.texttitle
.attrstartOffset,25%//弧的底部为50%-100%,顶部为0%-50%
.styletext定位符,中间