无法在 d3 饼图上制作多行文本
Can't make multiline text on d3 pie chart
我在处理多行文本时遇到了问题,没有任何线索,我需要你的帮助,请查看此 fiddle。
我对这个饼图的 space 非常有限,
但是项目的标题很长,问题是无论我尝试什么我都无法打破多行,
我试图限制文本的宽度但没有用,我认为 canvas 不接受 css 属性?
完整代码在fiddle
问题代码在这里:
var donuts = d3.selectAll("#" + el + ' .donut');
donuts.append('text')
.attr('class', 'center-txt value')
.style('font-size', '16px')
.style('fill','rgba(255,255,255,0.8)')
.attr('text-anchor', 'middle');
donuts.append('text')
.append('tspan')
.attr('class', 'center-txt type')
.attr('y', chart_r * 0.20)
.attr('text-anchor', 'middle')
.style('font-size', '22px')
.style('fill','rgba(255,255,255,0.8)')
.text(function(d, i) {
return d.type;
});
donuts.append('text')
.append('tspan')
.attr('class', 'center-txt percentage')
.attr('y', chart_r * 0.20)
.attr('text-anchor', 'middle')
.style('font-size', '18px')
.style('fill','rgba(255,255,255,0.8)')
.text('');
}
谢谢
有多种方法可以解决您的问题。其中之一是使用 Mike Bostock 的函数 wrap 来分解文本元素。
这是将限制设置为 120 像素的示例:
thisDonut.select('.percentage')
.attr("dy", 0)
.text(function(donut_d) {
return d.data.cat
}).call(wrap, 120);
这是更新后的 fiddle:http://jsfiddle.net/zkLyt5fm/
我在处理多行文本时遇到了问题,没有任何线索,我需要你的帮助,请查看此 fiddle。
我对这个饼图的 space 非常有限, 但是项目的标题很长,问题是无论我尝试什么我都无法打破多行, 我试图限制文本的宽度但没有用,我认为 canvas 不接受 css 属性?
完整代码在fiddle
问题代码在这里:
var donuts = d3.selectAll("#" + el + ' .donut');
donuts.append('text')
.attr('class', 'center-txt value')
.style('font-size', '16px')
.style('fill','rgba(255,255,255,0.8)')
.attr('text-anchor', 'middle');
donuts.append('text')
.append('tspan')
.attr('class', 'center-txt type')
.attr('y', chart_r * 0.20)
.attr('text-anchor', 'middle')
.style('font-size', '22px')
.style('fill','rgba(255,255,255,0.8)')
.text(function(d, i) {
return d.type;
});
donuts.append('text')
.append('tspan')
.attr('class', 'center-txt percentage')
.attr('y', chart_r * 0.20)
.attr('text-anchor', 'middle')
.style('font-size', '18px')
.style('fill','rgba(255,255,255,0.8)')
.text('');
}
谢谢
有多种方法可以解决您的问题。其中之一是使用 Mike Bostock 的函数 wrap 来分解文本元素。
这是将限制设置为 120 像素的示例:
thisDonut.select('.percentage')
.attr("dy", 0)
.text(function(donut_d) {
return d.data.cat
}).call(wrap, 120);
这是更新后的 fiddle:http://jsfiddle.net/zkLyt5fm/