gpt4 book ai didi

svg - 在圆弧d3js内对齐文本

转载 作者:行者123 更新时间:2023-12-02 05:25:07 25 4
gpt4 key购买 nike

我正在尝试绘制一个带有同心圆的图表,其中的半径将定义各个点之间的距离。我希望特定距离处的所有点的标签都出现在相应的外壳内。我正在使用 d3 绘制图表。除了我无法弄清楚如何确保文本很好地呈现并与具有恒定字符宽度和字符间距的基线对齐之外,我一切顺利。我花了一整天的时间试图解决这个问题,我们将不胜感激任何帮助。

这是 JSFiddle

这是javascript代码

var dataset = [{label:"Hello1", value:5},{label:"Hello2", value:10 {label:"Hello3",value:15},{label:"Hello4", value:20},{label:"Hello5", value:25}];

var arc = d3.svg.arc()
.innerRadius(function(d,i){return i*35;})
.outerRadius(function(d,i){return (i*35+30);})
.startAngle(0)
.endAngle(2 * Math.PI);

var svg = d3.select("body").append("svg")
.attr("width", 960)
.attr("height", 500)
.selectAll("g")
.data(dataset)
.enter()
.append("g")
.attr("transform", "translate(480,250)");

var arcs = svg.append("path")
.attr("fill","red")
.attr("id", function(d,i){return "s"+i;})
.attr("d",arc);

var thing = svg.append("g")
.attr("id","thing")
.style("fill","navy");

thing.append("text")
.style("font-size",20)
.attr("dy",function(d,i){return 20;})
//.attr("alignment-baseline","middle")
.append("textPath")
.attr("textLength",function(d,i){return 90-i*5 ;})
.attr("xlink:href",function(d,i){return "#s"+i;})
.attr("startOffset",function(d,i){return 3/20;})
.text(function(d){return d.label;})

最佳答案

你的意思是这样的:

http://jsfiddle.net/wcWUE/

所有我改变的是:

thing.append("text")
.style("font-size",20)
.append("textPath")
.attr("textLength",function(d,i){return 90-i*5 ;})
.attr("xlink:href",function(d,i){return "#s"+i;})
.attr("startOffset",function(d,i){return 3/20;})
.attr("dy","-1em")
.text(function(d){return d.label;})

我还颠倒了环的顺序,这样遮挡就不是问题了。

我认为您可以制作一个单独的路径集合,可能只是在一个部分中定义以绘制文本。

但我不确定这个结果是不是你要找的?

关于svg - 在圆弧d3js内对齐文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13202407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com