我正在用D3使用d3.layout.pie()
创建一个饼图。 它看起来像这个,没有黑点(我已经把它们手动放在Photoshop中来说明我的问题)。我想知道如何计算这些点的坐标,这些坐标位于表面的中间,以便在其中放置一些工具提示。我不是要求一个完成的解决方案,而是更多关于如何去做的原则。 谢谢。如何获取沿饼图边缘的切片坐标?
回答
可以使用following equations沿圆的周长计算点:
x = cx + r * cos(a)
y = cy + r * sin(a)
哪里(cx, cy)
为圆心,r
为半径,并a
是角度。
为了让它适用于您,您将需要一种基于图表上的饼形切片计算角度的方法 - 请参阅下文。
按照d3 documentation for pie layouts,则pie
函数返回弧的列表,这样你就可以处理这个数据来计算每个点:
馅饼(值[,索引])
评估指定数组值的饼图函数。可以指定一个可选的索引,该索引传递给开始角度和结束角度函数。返回值是一个弧描述符数组
- value - 值存取器返回的数据值。
- startAngle - 以弧度表示的弧的起始角度。
- endAngle - 以弧度表示的弧末端角度。
- 数据 - 此弧的原始数据。
想必你可以只取endAngle
和startAngle
之间距离的一半每个弧,并把你的观点存在。
对于它的价值,这里是从pie.js
用来计算每个弧代码:
// Compute the arcs!
// They are stored in the original data's order.
var arcs = [];
index.forEach(function(i) {
var d;
arcs[i] = {
data: data[i],
value: d = values[i],
startAngle: a,
endAngle: a += d * k
};
});
return arcs;
这是否帮助?
上看到这个,上面的公式很好,但是如果你想在你的饼图的MIDDLE中标签,而不是在头部,你应该使用: ' \t \t VAR halfAngle:CGFloat的=(endAngle +由startAngle)/2.0 \t \t \t 如果\t endAngle <由startAngle { \t \t \t halfAngle + = CGFloat的(M_PI) \t \t} \t \t \t \t让x = centre.x + radius * 0.5 * cos(halfAngle) \t \t让y = centre.y + radius * 0.5 * sin(halfAngle) ' – Dewey
我知道你问了这个问题的那一年,但只是在可能帮助其他人的问题上下了一个答案。 尝试在要显示的圆的变换中使用arc.centriod()。
像这样的事情
enterMenu.append("circle")
.attr("r", 5)
.attr('transform',function(d){
return "translate(" + arc.centriod(d) + ")";
});
这应放置准确地圈在切片之间。在上面的函数中,d是弧的endAngle。
对于你参考看看这个链接http://bl.ocks.org/Guerino1/2295263
这可能听起来微不足道,但我试图找到每个片内的X和Y坐标,当我看到上面的公式公布,
X = CX + R * COS(一)
Y = CY + R * SIN(一)
,可以通过从(CX + 1或CY + 1)到半径长度加大研发完成的,并重复通过将(a)从原点角度增加到目标角度,然后将( cx,cy)。希望它能帮助别人。
我想了解您所描述的数学,但我不明白“增加r”或“增加(a)”的意思......你能提供一个例子吗? – Dewey
- 1. iPhone CorePlot饼图获取切片坐标
- 2. AS3 - 获取边缘坐标
- 3. 如何获取图像的边缘坐标?
- 4. 获取CGPoint的边缘/外部坐标
- 5. 获取边缘检测后的边缘坐标(Canny)
- 6. 获取边框的坐标,忽略边缘位置
- 7. 边缘检查坐标系
- 8. 我如何提取像素边缘/角落的坐标
- 9. 如何获取GPS坐标多边形
- 10. 如何使用BingMap计算地图四角(边缘)的坐标?
- 11. 如何从numpy切片对象获取坐标
- 12. 获取MapKit视图边框坐标
- 13. Highcharts - 当饼图切片移动时,如何移动每个饼图切片内的图标?
- 14. ARCGIS切片坐标
- 15. 饼图和边缘里面nvd3图
- 16. 如何获取沿GMaps方向的坐标?
- 17. jQPlot饼图 - 如何更改饼图切片标签的文本颜色
- 18. DotNetHighCharts饼图标签显示切片
- 19. 沿着标尺物体的边缘绘图
- 20. 点击图片,获取坐标
- 21. 如何显示图片并获取鼠标点击坐标
- 22. Actionscript 3 - 查找影片剪辑边缘的坐标
- 23. 使Amcharts切片采取整个饼图
- 24. 如何获取UIImageView的边缘以捕捉到屏幕边缘(超级视图)?
- 25. 获取边缘目标或源的igraph
- 26. 如何在帧边缘接触另一个边缘时获取该边缘?
- 27. d3.js饼图图例切片切换
- 28. 如何捕获Google Charts饼图切片的颜色值?
- 29. 如何获取图像的坐标/ JLabel?
- 30. JQPlot - 饼图 - 获取点击的切片颜色
你有没有得到这个工作? –
@JustinEthier我可以告诉你,使用你的答案我有类似的工作。虽然我发现我在计算中最终使用了两次偏移角度(感觉不对)。但是你可以在http://jsfiddle.net/IPWright83/s51mt3tv/4/ – Ian