2013-08-26 49 views
2

我的d3圖中的節點數量過大。所以我在該圖中構建了一個縮放機制。現在的問題是,我無法爲每個節點顯示文本,因爲它們會相互重疊。但是,當我放大節點時,空間足以顯示文本。D3在放大時顯示節點的文本

enter image description here

那麼,如何顯示文本時的空間足以顯示他們都沒有重疊?

+0

您必須移動標籤。 –

回答

1

我過去也遇到過這個問題。不幸的是,優化標籤放置不是一個簡單的問題爲了減輕重疊效應,一種選擇是使用restricted force layout for label placement。您還可以嘗試使用標註以允許標籤遠離節點移動。

在過去,我已經實現了一種貪婪的碰撞檢測基於算法的是去是這樣的:

sort the labels in decreasing priority 
for each label in the list // so most important first 
    if the label does not overlap any placed labels 
     place the label and add it to my collision data structure (e.g. quad tree) 
    else 
     hide the label 

顯然,這將有一些非最優的情況下,它可能會很慢,如果你有很多的動畫正在進行。但是,如果您可以選擇放大以查看更多標籤,並且您的絕對標籤數量不是太高,那麼它的效果會非常好。還有很多顯而易見的方法可以加速它,例如將測試限制在視圖中的標籤上(但您需要在平臺上進行更新)。

您可能會發現一些有用的建議here,其中包括實施collision detection