如果這太痛苦簡單,我已經試過尋找解決方案。在D3中繪製半徑
var ringBannerCcwArc = d3.svg.arc()
.innerRadius(420)
.outerRadius(470)
.startAngle(0)
.endAngle(function(t) {return t * -1 * 2 * Math.PI/6; });
,然後在DOM這裏定義它:
labels.append("path")
.attr("id", "ring-banner");
,然後在適當的時候我可以這樣做:
在D3,我可以通過定義這個執行弧
labels.transition.select("#ring-banner").style("fill", "red")
.attrTween("d", function() { return ringBannerCcwArc });
而且這將產生一個紅色的弧形「標籤」從0開始,並停止在任何
t * -1 * 2 * Math.PI/6
產生一個角度(是的,60 degress,但我打算它是一個可變的結果)。
我想要做的只是創建一條從「橫幅」的半徑向外擴展的線(以便我可以構建動態驅動的顯示)。
事情是這樣的形象:
我的目標是動態數據附加到這一點,並使用D3的amazingness它。所以一旦我瞭解瞭如何繪製上述解決方案,我想知道結束座標(x2,y2)。線路本身可以是一個固定的長度(比如說50),但是我怎樣才能確定它的位置,這樣我就可以將最後的區域附加到它上面?
事情是這樣的形象:
我再次道歉,如果這似乎是顯而易見的。謝謝你的幫助。
編輯: 最初的問題是關於我使用D3 - 創建ringBannerArc - 然後想要挖掘座標系。因此,正如兩位受訪者所說,這是一個基本的觸發問題,但這不是真正的問題。
最後,答案是d3並沒有按照我的要求去做。但它可以輕鬆執行解決方案。如果和我一樣,你正在爲實現D3而苦苦掙扎,並且理解它是數據可視化的非常獨特(而且非常強大)的方法,那麼你可能會發現這些鏈接很有用。感謝d3 Google Group的傢伙們。
有用貢獻者:
伊恩·約翰遜: 首先,你要知道如何從一個點劃一條線到另一個。這就是你想要的最終結果,如果你不能爲任意的行做它,你不能爲你想要的行做它。所以我們從這裏開始: http://tributary.io/inlet/4229462/第二部分是計算要繪製的圓上的點。但在你做這件事之前,你應該設置一些事情,以便你可以輕鬆地確認這一點。所以我們畫出整個圓,然後繪製一個我們可以使用的點: http://tributary.io/inlet/4229477/現在讓我們嘗試使用trig根據輸入半徑將該點放置在圓上的某個點上: http://tributary.io/inlet/4229496/一旦我們可以控制該點,我們就來全圓)和招行http://tributary.io/inlet/4229500/
克里斯·維奧:包好了一個不錯的輔助功能:http://jsfiddle.net/christopheviau/YPAYz/建議由斯科特·默裏書面初學者一個偉大的書:http://ofps.oreilly.com/titles/9781449339739/index.html
斯科特·穆雷:使一篇精彩的參考文章,由白皮書撰寫d3作者 - 對於我們這些喜歡瞭解螺母和螺栓的人:http://vis.stanford.edu/files/2011-D3-InfoVis.pdf
是的,但在d3。 – Ricalsin
您可以使用例如d3.line,並使用上面的公式設置x和y。或者你可以使用一個svg路徑元素,用上面的公式計算座標。 D3在你可以做的事情上非常靈活,因爲你不受限於它的基元 – tjltjl
謝謝。我正在試驗線路發生器。但是,雖然您發佈的公式會發現可以繪製線條的「點」,但您將如何保持半徑的角度(「endAngle」)?我認爲有一種更簡單的方法可以利用已經計算出來的公式。 – Ricalsin