我正在尝试使用d3.js来显示sparkfun cloud(物联网云)中存储的数据。 There is example using google chart for visualizing sparkfun cloud,使用以下脚本:
<!DOCTYPE html>
<html>
<head>
<!-- EXTERNAL LIBS-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://www.google.com/jsapi"></script>
<!-- EXAMPLE SCRIPT -->
<script>
// onload callback
function drawChart() {
var public_key = 'dZ4EVmE8yGCRGx5XRX1W';
// JSONP request
var jsonData = $.ajax({
url: 'https://data.sparkfun.com/output/' + public_key + '.json',
data: {page: 1},
dataType: 'jsonp',
}).done(function (results) {
var data = new google.visualization.DataTable();
data.addColumn('datetime', 'Time');
data.addColumn('number', 'Temp');
data.addColumn('number', 'Wind Speed MPH');
$.each(results, function (i, row) {
data.addRow([
(new Date(row.timestamp)),
parseFloat(row.tempf),
parseFloat(row.windspeedmph)
]);
});
var chart = new google.visualization.LineChart($('#chart').get(0));
chart.draw(data, {
title: 'Wimp Weather Station'
});
});
}
// load chart lib
google.load('visualization', '1', {
packages: ['corechart']
});
// call drawChart once google charts is loaded
google.setOnLoadCallback(drawChart);
</script>
</head>
<body>
<div id="chart" style="width: 100%;"></div>
</body>
</html>
我希望使用d3.js来绘制数据,而不是使用谷歌图表,因为它提供了更大的灵活性(我很惊讶需要花费多少精力来使用谷歌图表重新调整图表的大小)。为此,可能需要使用d3.js json提取器从网站获取数据。我在下面根据问题1,2尝试过:
var data1;
var url = "https://data.sparkfun.com/output/dZ4EVmE8yGCRGx5XRX1W.json"
d3.json(url, function (json) {
if (error) return console.warn(error);
//data1 = json;
data1=json;
consol.log(data1)
//code here
})
它不起作用。我可能有一些关键信息丢失,因为我是d3.js和java的新手。请给我一个指示,以便我可以关注。谢谢!
答案 0 :(得分:1)
由于你试图捕获error
,你必须将错误作为匿名函数中的第一个参数传递:
d3.json(url, function (error, json) {
//first argument -----^
if (error) return console.warn(error);
data1=json;
consol.log(data1)
//code here
})
请注意:在d3.json
中,“error”是第一个参数,而不是第二个。
更简单的替代方法是简单地删除“错误”:
d3.json(url, function (json) {
data1=json;
consol.log(data1)
//code here
})