Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在D3中,如何将文本放置在已经附加了文本的形状中?_Javascript_Jquery_Html_Css_D3.js - Fatal编程技术网

Javascript 在D3中,如何将文本放置在已经附加了文本的形状中?

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"

我目前正在做下面的工作,我想把文本放在弧内,类似于。但是,每当我尝试向任何内容添加文本时,文本都不会显示。我看过开发人员控制台,它似乎在那里,但它不会在屏幕上显示。我使用了第一个示例中提供的所有代码,但我尝试在arc元素中添加以下代码:

("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定位符,中间