我正在用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