2012-11-27 36 views
2

現在擺弄幾個小時後,仍然無法使標籤在我的D3 Sunburst佈局中工作。下面是它的樣子:不能使標籤在可縮放的d3陽光下工作

http://codepen.io/anon/pen/BcqFu

enter image description here

我試了幾種方法,我可以在網上找到,這裏有一個例子我試過名單,可惜都失敗對我來說:

[不能因爲新用戶的限制發佈鏈接列表]

當然還有咖啡味輪:http://www.jasondavies.com/coffee-wheel/

目前我用標題標籤填充切片,只有當它懸停在元素上時才顯示它。爲此,我正在使用此代碼:

vis.selectAll("path") 
    .append("title") 
    .text(function(d) { return d.Batch; }); 

是否有類似的東西可以用來顯示批次中的批號?

-

更多信息:傑森·戴維斯使用此代碼來選擇和添加文本節點:

var text = vis.selectAll("text").data(nodes); 
var textEnter = text.enter().append("text") 
    .style(...) 
    ... 

雖然他的輪選擇還給97個結果(相當於路徑標籤的量)我只有一次,因此我只能顯示一個標籤(一個在中間)

+0

編輯瞭解更多信息。 – Elvis

回答

1

需要一些運用計謀,但讓你開始必要的段子:

var labels = vis.selectAll("text.label") 
     .data(partition.nodes) 
    .enter().append("text") 
     .attr("class", "label") 
     .style("fill", "black") 
     .attr("transform", function(d) { return "translate(" + arc.centroid(d) + ")"; }) 
     .text(function(d, i) { return d.Batch;}); 

你可以看到它here

訣竅是,除了確保您準備附加文本節點到相應的數據,你也必須告訴他們去哪裏(具備方便的質心位置函數變換屬性弧形電腦)。

請注意,我不需要vis.data([json]),因爲svg元素已經附加了數據(當您追加路徑時),但我仍然必須將文本選擇與每個分區中的節點相關聯。

此外,我對文本元素進行分類,以便它們不會與將來可能要添加的任何其他文本元素混淆。

+0

謝謝,這絕對有幫助! – Elvis

+1

很酷,但轉換無法正常工作。 – joaomilho