0
我想绘制一个折线图,y轴上的价格和x轴上的日期。d3.svg.line()。x函数不叫
上执行时:。
.attr("d", function(d){
console.log(line(d.closePrice));
return line(d);
});
线(d.closePrice)返回null和d3.svg.line()X()和d3.svg.line()y的永远不会调用。我有一个类似的工作示例,它使用d3.scale.linear(),我无法弄清楚是什么导致我的代码失败。
var x = d3.time.scale()
.domain([new Date(closes[0].closeDate), new Date(closes[closes.length - 1].closeDate)])
.range([margin, width - margin]);
var y = d3.scale.linear()
.domain([closePriceMin, closePriceMax])
.range([height - margin, margin]);
var line = d3.svg.line()
.x(function(d) {
console.log("line x called");
return x(new Date(d.closeDate));
})
.y(function(d) {
console.log("line y called");
return y(d.closePrice);
});
var svg = d3.select("body").append("svg");
svg.attr("height", height)
.attr("width", width);
svg.selectAll("path")
.data(closes)
.enter()
.append("path")
.attr("class", "line")
.attr("d", function(d){
console.log(line(d.closePrice));
return line(d);
});
我从一个文件中使用得到JSON:
d3.json("data.json", function(error, json){
for(var close in json){
closes.push(json[close]);
JSON格式:
[{
"id": 6031839,
"equityId": 52597,
"closeDate": "Apr 8, 2016",
"closePrice": 12.73,
"sma12Day": 13.891666666666664,
"sma26Day": 13.184230769230773,
"ema12Day": 12.533611111111112,
"ema26Day": 12.696952662721895,
"macd": -0.1633415516107828,
"macdSignal": -0.17577601845764257,
"macdHistogram": 0.012434466846859782,
"openPrice": 12.91,
"high": 12.91,
"low": 12.72,
"volume": 22700,
"closePeak": false,
"closeTroff": false,
"macdPeak": false,
"macdTroff": false
}, {
"id": 6030002,
"equityId": 52597,
"closeDate": "Apr 7, 2016",
"closePrice": 12.61,
"sma12Day": 13.908333333333331,
"sma26Day": 13.159615384615385,
"ema12Day": 12.385416666666666,
"ema26Day": 12.570059171597633,
"macd": -0.18464250493096657,
"macdSignal": -0.17599694807672042,
"macdHistogram": -0.008645556854246145,
"openPrice": 12.78,
"high": 12.78,
"low": 12.6,
"volume": 20700,
"closePeak": false,
"closeTroff": true,
"macdPeak": false,
"macdTroff": true
}]
变化ü可以请分享JSON或的jsfiddle?所以我可以看看 –
请看更新 – user2670815