2016-04-29 39 views
1

使用D3現在我試圖創建一個地圖,看起來像這樣一個傳奇成功創建了幾個圖表後:D3圓環圖上賽季固定標籤

Example of a donut chart as a legend.

這是一種表達形式每年的季節圖表會以固定標籤下方的顏色標明,表明每年的每個月(在圖像中它們被舍入到幾個月,但我不希望這種情況發生在我嘗試創建的圓環圖中) 。

現在我想我會在D3js頁面上按照環形圖的example開始,然後添加一些固定的標籤。在達到那一點之前,雖然我發現自己陷入困境,無法複製這個例子。

我試着用Plunkr here做一個簡明的例子,我想知道是否有人會看一看。我已經按照方法here使用創建的對象作爲數據輸入,但我沒有看到任何錯誤,但也許我錯了。我收到錯誤消息如下:1494

Uncaught TypeError: Cannot read property 'indexOf' of undefined: Main.js(1494) 

線對應的Plunkr線37,閱讀:

.append(g) 

這使我相信,當我點事情錯了d3的數據,但我不確定這是什麼。我會欣賞一雙新鮮的眼睛!

+0

這是錯誤的'.append(G)'它應該是'.append( 「G」)' – Cyril

+0

好吧,那是一種虎頭蛇尾。謝謝! 但是,當我解決這個問題時,我在頁面上留下了一個空的div。任何想法發生了什麼? – Yoeri

回答

1

你有幾個問題:

首先,你忘了複製/粘貼博斯托克的例子後改變​​。我改變了它的dur

var pie = d3.layout.pie() 
.sort(null) 
.value(function(d) { 
    return d.dur 
}); 

在那之後,我不得不改變你的數據:

var data = [ 
{ seizoen: "lente", dur: 60 }, 
{ seizoen: "zomer", dur: 122 }, 
{ seizoen: "herfst", dur: 61 }, 
{ seizoen: "winter", dur: 122 } 
]; 

而且,你忘了使用#以選擇div的ID:

var svg = d3.select("#legend").append("svg") 

順便說一下,你的jQuery路徑不正確,你的CSS中的#legend很少。

現在你有一個甜甜圈:http://plnkr.co/edit/B2CJMN7Wy1By0jlMpkii?p=preview

+0

嘆了口氣,這是漫長的一週。感謝您的幫助!我甚至在我的編輯中評論過「人口」部分。 – Yoeri

+0

不用擔心。我不使用jquery,所以我只複製了我在cdnjs中找到的第一條路徑。另外,我將CSS中的#legend更改爲固定值(像素),您也可以更改。乾杯。 –

+0

不是在實際的產品中,但它在PLUNER中是更好的,再次感謝。 你知道從哪裏開始爲這件事添加固定標籤嗎?在google上快速搜索只會提供這個問題作爲答案,但也許我正在尋找錯誤的方向。 – Yoeri