Javascript 绕D3弧的一侧
我正在使用D3.js的内置arc函数为我的数据生成SVGJavascript 绕D3弧的一侧,javascript,d3.js,svg,graphics,vector-graphics,Javascript,D3.js,Svg,Graphics,Vector Graphics,我正在使用D3.js的内置arc函数为我的数据生成SVGs .attr("d", function(element, index) { var arc = d3.arc() .innerRadius(iR) .outerRadius(iR + 10) .startAngle(element[1]) .endAngle(element[2]) .cornerRadius(isRounded ? cR : 0)
s
.attr("d", function(element, index) {
var arc = d3.arc()
.innerRadius(iR)
.outerRadius(iR + 10)
.startAngle(element[1])
.endAngle(element[2])
.cornerRadius(isRounded ? cR : 0);
return arc();
});
这很好用,但我想绕某些圆弧的一侧(两个角)。但是,当角半径随.cornerRadius()
一起提供时,它会环绕所有四个角
我知道有一些方法可以选择性地使矩形的角变圆,但我希望有一些通用的方法可以使圆弧变圆
我还看到了关于只舍入圆弧的一些角,但它没有答案(D3V4自从发布以来就已经出来了) 即使使用
v4
API,仍然没有直接的方法来实现这一点。查看源代码,拐角半径成为计算整个圆弧(所有4个拐角)的固定值。最简单的修复方法是为每个数据点添加两条弧,第二条弧只填充角点
例如,假设我们有一个非常圆的圆弧:
var myArcs=[
[0, 45],
[180, 300]
];
var vis=d3。选择('主体')
.append('svg')
.attr('width',400)
.attr('height',400);
var arc=d3.arc()
.内半径(80)
.外层(150)
var someArcs=vis.selectAll('path')
.数据(myArcs)
.enter();
某些弧
.append(“路径”)
.attr(“转换”、“翻译(200200)”)
.attr(“d”,函数(d){
弧度startAngle(d[0]*(Math.PI/180))
.端角(d[1]*(数学PI/180))
.转弯半径(20);
返回弧();
})
.attr(“填充”,函数(d,i){
返回d3.schemeCategory10[i];
});代码>
这不适用于使用alpha的笔划和填充颜色。