我創建直方圖具有多列排列,「年齡」和「性別」,使用「年齡」一欄。我的直方圖只用「年齡」數據。但是我希望能夠在柱狀圖中存儲或存儲相應的「性別」數據。這樣,當我將鼠標移動到bin時,我可以計算出處理bin的「性別」數據的情況 - 並且再次,bin(以及整個直方圖)建立在「年齡」數據上。
的樣本數據:
{
"age":[22,21,30,26,28,26,23,32,30,26,34,23,33,23,34,28,34,35,31,15,26,34,32,21,35,28,27,26,24,19,21,32,23,23,23,23,28,32,22,26,32,21,25,30,23,30,21,20,28,28,26,26,31,39,25,30,36,23,38,30,30,31,23,22,28,26,23,32,26,34,28,30,24,27,26,38,24,30,34,25,28,35,22,27,26,25,29,32,26,30,33,33,31,31,37,28,27,28,29,16],
"gender":["1","0","0","0","1","1","1","1","1","1","0","1","0","0","1","0","0","0","1","1","1","1","0","0","1","0","1","0","0","1","0","0","1","0","0","1","1","0","1","1","0","1","0","0","1","1","0","0","1","0","1","1","1","0","1","1","1","0","1","1","0","1","0","1","1","1","1","1","0","1","1","0","1","0","1","1","1","1","0","0","1","0","1","1","0","0","1","1","0","1","1","1","0","1","1","0","0","1","1","0"]
}
下面是一些代碼。我認爲這完全是直接對應於這個問題,但讓我知道,如果需要更多:
var histogram = d3.layout.histogram()
.frequency(false)
.bins(x.ticks(10));
var canvas = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
d3.json("100sample.json", function(error, data) {
//var allData = histogram(allAge.age);
var allAge = histogram(data.age);
var allBars = canvas.selectAll(".allBar")
.data(allAge)
.enter().insert("rect", ".axis")
.attr("class", "allBar")
.attr("x", function(d) { return x(d.x) + 1; })
.attr("y", function(d) { return y(d.y); })
.attr("width", x(allAge[0].dx + allAge[0].x) - x(allAge[0].x) - 1)
.attr("height", function(d) { return height - y(d.y); })
.on('mouseover', allTip.show)
.on('mouseout', allTip.hide);
我把一切都用「鼠標懸停」工作,建設直方圖等每個時代價值都有相應的性別價值,但性別值不會改變箱/直方圖。我在想有什麼東西在作怪與添加性別值
.data()
,但不知何故沒有要求他們直方圖佈局?
如何合併與用於直方圖的數據對應的此額外數據?
---更新----
我的理解是需要把整個數據集綁定到SVG /帆布allBars變量,這樣我可以爲直方圖和性別對我試圖元數據訪問allAge在mouseover上計算。
我:
var total = [allAge, data.gender];
創建從data.age的allAge直方圖之後。這可能不是在一次所有數據帶來的最好方式......
現在,而不是:
.data(allAge)
我:
.data(total)
所以我需要指標總數[ 0]的直方圖結構和總數[1]的元數據將與鼠標懸停相關聯。如何在allbars var內建立索引 - 特別是在.attr內建立直方圖?
WOW很棒的信息!謝謝!這裏的邏輯完全有意義,但我仍然有一些問題,關於綁定.data(數據)後,您只能訪問直方圖組件和性別組件的問題 - 我正在編輯我的問題以更詳細地提出此問題。 – squishy 2014-10-17 13:42:14
@ahburr重新讀取blockquote下的段落,直到找到它。壓縮你的數組,將其傳遞給'直方圖'(然後'數據'),並設置直方圖存取器以從壓縮對中返回正確的元素。 – mgold 2014-10-18 00:52:06
當然啊!我之前被誤解,並迅速跳到我認爲是正確的方式。正確的方法是給直方圖佈局所有內容,但只能訪問直方圖構造的.age,並將.gender作爲元數據附加。完美,謝謝!現在看起來如此明顯...... – squishy 2014-10-18 14:34:43