- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
attribute d: Expected number, "MNaN、NaNLNaN、NaNL…". "D3 错误-6ren"> attribute d: Expected number, "MNaN、NaNLNaN、NaNL…". "D3 错误-我正在从 Quandl 的 API 导入一些数据,以制作多年来布伦特原油价格的图表。我正在使用 Angular 发出的 HTTP 请求提供数据。不知何故,所提供的数据没有被读取为数字,因为我收到以下错-6ren">
我正在从 Quandl 的 API 导入一些数据,以制作多年来布伦特原油价格的图表。我正在使用 Angular 发出的 HTTP 请求提供数据。不知何故,所提供的数据没有被读取为数字,因为我收到以下错误:
Error: attribute d: Expected number, "MNaN,NaNLNaN,NaNL…".
app.service('oilService', function($http) {
delete $http.defaults.headers.common['X-Requested-With'];
this.getData = function() {
var URL = "https://www.quandl.com/api/v1/datasets/CHRIS/ICE_B1.json";
return $http({
method: 'GET',
url: URL
})
}
})
.directive('oilGraph', function() {
return {
scope: {},
controller: function(oilService) {
var width = 200;
var height = 100;
var parseTime = d3.timeParse("%y-%m-%d");
var x = d3.scaleTime().range([0, width]);
var y = d3.scaleLinear().range([height, 0]);
var valueline = d3.line()
.x(function(d) { return x(d.date); })
.y(function(d) { return y(d.settle); });
var svg = d3.select("#oilgraph").append("svg")
.attr("width", width)
.attr("height", height);
oilService.getData()
.then(function(data) {
var mapped_data = data.data.data.map(function(d) {
return {
date: parseTime(d[0]),
settle: d[4]
};
})
x.domain(d3.extent(data, function(d) { return d.date; }));
y.domain([0, d3.max(data, function(d) { return d.settle; })]);
svg.append("path")
.data([mapped_data])
.attr("class", "line")
.attr("d", valueline);
svg.append("g")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x));
svg.append("g")
.call(d3.axisLeft(y));
})
})
}
}
})
最佳答案
您的问题只是错误的说明符。因为你的日期有世纪......
"2017-06-16"
...您应该使用 %Y
而不是 %y
。根据API :
%Y - year with century as a decimal number.
因此,这应该是您的说明符:
var parseTime = d3.timeParse("%Y-%m-%d");
除此之外,您必须在比例尺中使用mapped_data
,而不是data
。
这是您的代码,其中包含更改:
var width = 500;
var height = 200;
var parseTime = d3.timeParse("%Y-%m-%d");
var x = d3.scaleTime().range([0, width]);
var y = d3.scaleLinear().range([height, 0]);
var valueline = d3.line()
.x(function(d) {
return x(d.date);
})
.y(function(d) {
return y(d.settle);
});
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
d3.json("https://www.quandl.com/api/v1/datasets/CHRIS/ICE_B1.json", function(data) {
var mapped_data = data.data.map(function(d) {
return {
date: parseTime(d[0]),
settle: d[4]
};
});
x.domain(d3.extent(mapped_data, function(d) {
return d.date;
}));
y.domain([0, d3.max(mapped_data, function(d) {
return d.settle;
})]);
svg.append("path")
.data([mapped_data])
.attr("class", "line")
.attr("d", valueline);
svg.append("g")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x));
svg.append("g")
.call(d3.axisLeft(y));
})
path {
fill: none;
stroke: black;
}
<script src="https://d3js.org/d3.v4.min.js"></script>
关于javascript - "Error: <path> attribute d: Expected number, "MNaN、NaNLNaN、NaNL…". "D3 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44846158/
我正在从 Quandl 的 API 导入一些数据,以制作多年来布伦特原油价格的图表。我正在使用 Angular 发出的 HTTP 请求提供数据。不知何故,所提供的数据没有被读取为数字,因为我收到以下错
我正在尝试将我的 map 置于 d3.js 中。我找到了这段代码并做了一些改动。我做不到。我收到这个错误。我该如何解决它。我是 JavaScript 的新手。 这是我的代码。 path {
我是一名优秀的程序员,十分优秀!