饼图布局起始角度
Pie layout start angle
本文关键字:布局 更新时间:2024-05-23
我正在尝试对D3中的饼图布局使用startAngle,以确保饼图的第一个切片始终从90度开始绘制:
var pie = d3.layout.pie()
.sort(null)
.value(function(d) { return d.amount; })
.startAngle(90 * (Math.PI/180));
这是有效的,但我发现馅饼现在还差90度:
http://jsfiddle.net/qkHK6/105/
我唯一能解决这个问题的方法是强制结束位置,如下所示:
.endAngle(450 * (Math.PI/180))
但这似乎是一个黑客。有正确的方法吗?文档中说,使用startAngle
将饼图布局的总体起始角度设置为指定值弧度
所以我认为剩下的馅饼会相应地画出来,并与它的起点相匹配。。。
如果将startAngle
设置为静态值,则所有饼图切片的值都将相同,即它们都将从同一位置开始。对于你想要做的事情,你实际上不需要修改饼图布局的角度(因为这是首先计算它们的方法),而是需要修改用于绘制线段的圆弧生成器的角度。
例如,要旋转90度,请执行
var arc = d3.svg.arc().outerRadius(r)
.startAngle(function(d) { return d.startAngle + Math.PI/2; })
.endAngle(function(d) { return d.endAngle + Math.PI/2; });
在这里完成jsfiddle。
饼图短90度的原因是饼图布局的默认endAngle是2π,这也解释了为什么你提到的"破解"有效(将角度添加到endAngle,使endAngle startAngle=2π)。
@Lars描述的解决方案(更改d3.svg.arc()
的设置)在大多数情况下应该足够了。但是,如果饼图上有更多的元素,例如,带有多边形线的标签,则必须更改d3.layout.pie()
而不是d3.svg.arc()
的设置,因为标签线依赖于d3.layout.pie()
计算的d.startAngle
和d.endAngle
。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 使用agility.js进行页面布局和合成
- 同位素库错误:未捕获错误无布局模式包装生产线8
- 如何实现此布局
- 有没有一个javascript图形绘制库可以进行气球树布局
- vaadin:使用自定义布局集成angular js
- 布局中的项目管理
- 如何操作d3js树布局
- 在HTML/JavaScript中,有没有一种方法可以在图像开始加载时知道图像的最终布局尺寸
- 在链接d3强制布局中添加和删除类
- 为什么jquery悬停在jsfiddle中可以工作,而在我的html布局中却不能
- 骨干木偶-布局视图僵尸
- 以下数据布局在设置显示上向上移动:无
- 如何在Marionettejs中渲染根布局
- 使用jQuery库Packey来制作卡片布局,我可以用导航链接重新订购
- 布局引擎和javascript引擎之间的区别
- 布局/结构建议
- 同位素更新到V2,如何切换大小和布局
- JQuery Mobile破坏了我的布局:如何禁用自动打字
- 如何在d3力布局中使直线而不是曲线