如何将文本附加到SVG(How to append text to SVG)

编程入门 行业动态 更新时间:2024-10-23 15:29:45
如何将文本附加到SVG(How to append text to SVG)

我试图通过下面的代码将文本追加到svg,以下代码,但它不起作用。

var svg = d3.select("#chart"); xScale.domain(data.map(function(d){return d.key;})) yScale.domain([0,d3.max(data,function(d){return d.doc_count;})]) svg.append("g") .attr("class","axis") .attr("transform","translate("+margin.left+","+height+")") .call(xAxis); svg.append("g") .attr("class","axis") .attr("transform","translate("+margin.left+",0)") .call(yAxis); svg.attr("width",width + margin.left + margin.right) .attr("height",height + margin.top + margin.bottom) .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); svg.selectAll("rect") .data(data) .enter() .append("rect") .attr("x",function(d){return margin.left + xScale(d.key)}) .attr("y",function(d){return yScale(d.doc_count)}) .attr("width", xScale.rangeBand()) .attr("height", function(d) { return height - yScale(d.doc_count); }) .attr("fill","teal"); svg.selectAll("text") .data(data) .enter() .append("text") .text(function(d){return d.doc_count;})

最后,当我看到dom时,没有文本元素标签。

I am trying to append text to the svg by below code for that I the following code but it's not working.

var svg = d3.select("#chart"); xScale.domain(data.map(function(d){return d.key;})) yScale.domain([0,d3.max(data,function(d){return d.doc_count;})]) svg.append("g") .attr("class","axis") .attr("transform","translate("+margin.left+","+height+")") .call(xAxis); svg.append("g") .attr("class","axis") .attr("transform","translate("+margin.left+",0)") .call(yAxis); svg.attr("width",width + margin.left + margin.right) .attr("height",height + margin.top + margin.bottom) .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); svg.selectAll("rect") .data(data) .enter() .append("rect") .attr("x",function(d){return margin.left + xScale(d.key)}) .attr("y",function(d){return yScale(d.doc_count)}) .attr("width", xScale.rangeBand()) .attr("height", function(d) { return height - yScale(d.doc_count); }) .attr("fill","teal"); svg.selectAll("text") .data(data) .enter() .append("text") .text(function(d){return d.doc_count;})

At the end when I see the dom there are no text element tags.

最满意答案

你正在调用call(xAxis)并调用(yAxis),它会创建<text>元素,所以当你说d3.selectAll(“text”)时,它会选择由call(xAxis)和call(yAxis)创建的元素。

所以假设你的数据数量是5,那么它已经有5个<text>元素,它不会追加新的元素。

将您的代码更新为

svg.append("g") .attr("class","axis") .attr("transform","translate("+margin.left+","+height+")") .call(xAxis); svg.append("g") .attr("class","axis") .attr("transform","translate("+margin.left+",0)") .call(yAxis);

经过下面的代码

svg.selectAll("text") .data(data) .enter() .append("text") .text(function(d){return d.doc_count;})

You are calling call(xAxis) and call(yAxis) which will create <text> elements so when you say d3.selectAll("text") it selects those elements created by call(xAxis) and call(yAxis).

so suppose your data count is 5 then it has already 5 <text> elements and it won't append a new one.

Update your code to

svg.append("g") .attr("class","axis") .attr("transform","translate("+margin.left+","+height+")") .call(xAxis); svg.append("g") .attr("class","axis") .attr("transform","translate("+margin.left+",0)") .call(yAxis);

after below code

svg.selectAll("text") .data(data) .enter() .append("text") .text(function(d){return d.doc_count;})

更多推荐

本文发布于:2023-07-22 10:02:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1219185.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何将   文本   SVG   append   text

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!