2012-06-15 31 views
0

我試圖用d3.js創建一個字/標籤雲,其中y軸由數據變量控制,而不是像普通單詞那樣隨機放置/標籤雲。所以我不介意文本放在x軸上的位置,但我確實想要控制它在y軸上的位置。在d3.js中訪問dom元素select/append - 創建自定義標籤雲

我的方法是添加一個文本元素的每一塊數據與x屬性功能:

.attr("x", function(d,i) { 
    loop 10 times 
     generate random x 
     loop through previous added element <i to check for collision 
     no collision exit loop 
    if (collision) set x to somewhere off the image 

此方法將失敗,因爲我似乎不能夠訪問任何由先前的元素,直到追加完成。

任何建議爲更好的方法來做到這一點或在附加過程中訪問元素的方式?

+0

您可以將每個節點的'tspan'內的'text'父裏面,然後隨機attr'dx'。這將始終避免碰撞並正確定位文本。 – Duopixel

回答