我正試圖在多折線折線圖上放置符號。在d3.js API reference,符號使用轉換功能定位:格式化d3.js中的回調函數以在多重摺線圖上放置符號
vis.selectAll("path")
.data(data)
.enter().append("path")
.attr("transform", function(d) { return "translate(" + x(d.x) + "," + y(d.y) + ")"; })
.attr("d", d3.svg.symbol());
不幸的是,我似乎無法應用此建立自己的函數(d)回調函數訪問d.date和幾個d.temperature套如下面示出和描述this example:
var cities = color.domain().map(function(name) {
return {
name: name,
values: data.map(function(d) {
return {date: d.date, temperature: +d[name]}; <-- stored in 'd.values'
})
};});
最好我可以想出通過試驗和錯誤是以下內容,其中我提供漫畫救濟:
for (i=0; i<cities[0].values.length; i++) // note: for comic relief only
{
vis.selectAll(".class")
.data(cities)
.enter().append("path")
.attr("transform", function(d) { return "translate(" + x(d.values[i].date) + "," + y(d.values[i].temperature) + ")"; })
.attr("d", d3.svg.symbol())
}
它實際上工作,我認爲這很有趣,但是我嘗試編寫一個正確的嵌套函數迄今爲止失敗了。例如,這給出了transform =「translate(NaN,NaN)」
.attr("transform", function(d) { return "translate(" + x(d.values, function(c) { return c.date}) + "," + y(d.values, function(c) { return c.temperature}) + ")"; })
我不理解什麼?任何援助將不勝感激。
我更新了問題以反映我正在使用城市。我測試了你的平板清單,並按照預期工作,但是對於大量城市來說,似乎有一個上限? - 儘管所有數據都存在於平面值列表中,但我似乎無法再顯示〜500個符號。嗯...我將繼續嘗試直接訪問嵌套結構,因爲我非常好奇如何去做。如果我無法獲得直接的工作方式,我會在幾天內標記爲正確。 – o1sound
我已經添加了一些答案,以顯示一種替代方法,稍微修改您的循環以創建符號,而不是我最初建議的數據轉換。 –
這真是太好了,上限錯誤確實是我自己的,而且你建議的兩種方法工作得很好。他們一起展示瞭如何訪問和設置我的陣列,這正是我所希望的。 – o1sound