我對D3很新穎,現在我被困在一個特定的主題中,我認爲它非常基礎。我一整天都在研究一些能夠幫助我的東西,但是我發現的一切都不是我所需要的,無論如何,如果它已經被問到,我從現在開始道歉。基本D3 - 在對象內部使用數組
基本上,我已經創建使用數組散點圖到目前爲止,如:
var dataset = [[100,220],[130,350],[70,60],[100,140],[520,300],[120,280],[390,170]];
然後:
var chart = d3.select("body")
.append("svg")
.attr("width",w)
.attr("height",h);
var plot = chart
.selectAll("circle")
.data(dataset)
.enter()
.append("circle")
.attr("cx",function(d){return d[0];})
.attr("cy",function(d){return d[1];})
.attr("r",function(d,i){return i*4});
如果現在我想用人造物體,而不是一個數據集工作陣列它仍然工作很好,只需進行一些調整:
var dataset = [
{x:100,y:220},
{x:130,y:350},
{x:70,y:60},
{x:100,y:140},
{x:520,y:300},
{x:120,y:280},
{x:390,y:170}
];
更新後的代碼:
var chart = d3.select("body")
.append("svg")
.attr("width",w)
.attr("height",h);
var plot = chart
.selectAll("circle")
.data(dataset)
.enter()
.append("circle")
.attr("cx",function(d){return d.x;})
.attr("cy",function(d){return d.y;})
.attr("r",function(d,i){return i*4});
然後我採取了一步,創造了多個對象與多單x和y座標(我感興趣的是特定的情況下,因爲我的未來工作的數據集[真鈔]是由一系列的風力渦輪機,每個都有數千個xy點)。
var dataset = [ {Turbine: "01", x:[100,130,70,100],y:[220,350,60,140]},
{Turbine "02", x:[520,120,390,500], y:[300,280,170,400]};
到目前爲止,我還沒有知道在上面的代碼中應該做些什麼改進才能工作。我意識到d.x和d.y現在不會提供單個x和單個y點,它們提供了數組,這就是爲什麼之前的代碼現在無用,因爲屬性cx和cy每次迭代只需要一個座標。我試圖找到一種方式來在某種程度上能夠使用子選擇中的新索引(對於d中的每個i,代碼應該使用ii從子選擇d [i] .x [ii ])。
任何想法?提前感謝您的時間!
謝謝floribon,這是一個非常優雅的解決方案。只有兩件事需要編輯才能進行代碼工作: 1.在convertData函數內插入返回數據 2.在最後一行將「c.color」更改爲「d.color」 再次感謝您非常,它工作高明 – 2015-02-12 10:17:46