2017-04-01 69 views
0

我试图在一段时间内创建一个温度变化图,所以开始时,我试图绘制一些图上绘制的测试数据,但这些数据似乎都不想显示。我对JavaScript和flot有点新鲜,因此我试图根据看到其他人如何创建图表来拼凑所需的代码。无法获得flot图来显示

x轴上的时间数据,我在代码中创建的只是为了绘制温度,而我从包含测试数据的.json文件中检索温度数据。将数据点放入一个集合以传递到绘图函数似乎会合在一起,但我无法获得显示。相反,我得到的只是图像中显示的内容,我将在代码后显示。任何人都可以让我知道我做错了什么或我失踪了什么?我真的很难过这里。

源代码(通过编辑海军报示例页面制作):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
 
<html> 
 
<head> 
 
\t <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
 
\t <title>Flot Examples: Resizing</title> 
 
\t <link href="../examples.css" rel="stylesheet" type="text/css"> 
 
\t <link href="../shared/jquery-ui/jquery-ui.min.css" rel="stylesheet" type="text/css"> 
 
\t <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../../excanvas.min.js"></script><![endif]--> 
 
\t <script language="javascript" type="text/javascript" src="../../jquery.js"></script> 
 
\t <script language="javascript" type="text/javascript" src="../shared/jquery-ui/jquery-ui.min.js"></script> 
 
\t <script language="javascript" type="text/javascript" src="../../jquery.flot.js"></script> 
 

 
\t <script language="javascript" type="text/javascript" src="../../jquery.flot.time.js"></script> 
 

 
\t <script type="text/javascript"> 
 

 
\t 
 
\t $(document).ready(function() { 
 

 

 
\t \t //Creating an array to hold the plot data 
 
\t \t var plotdata = new Array(); 
 

 
\t \t $.getJSON('test_data.json', function (data) { 
 

 
\t \t \t //Creating a base date to make times off of 
 
\t \t \t var basedate = new Date("February 20, 2017 08:00"); 
 

 
\t \t for(var i = 0; i < 10; i++) 
 
\t \t { 
 
\t \t \t var datepoint = new Date(basedate.getTime() + 600000*i).getTime(); 
 
\t \t \t switch(i) { 
 

 
\t \t \t \t case 0: 
 
\t \t \t \t var temppoint = data["node 10"][0]["2017-02-22 20:00"][0]; 
 
\t \t \t \t break; 
 

 
\t \t \t \t case 1: 
 
\t \t \t \t var temppoint = data["node 10"][0]["2017-02-18 22:50"][0]; 
 
\t \t \t \t break; 
 

 
\t \t \t \t case 2: 
 
\t \t \t \t var temppoint = data["node 10"][0]["2017-02-20 22:00"][0]; 
 
\t \t \t \t break; 
 

 
\t \t \t \t case 3: 
 
\t \t \t \t var temppoint = data["node 10"][0]["2017-02-20 13:50"][0]; 
 
\t \t \t \t break; 
 

 
\t \t \t \t case 4: 
 
\t \t \t \t var temppoint = data["node 10"][0]["2017-02-19 7:00"][0]; 
 
\t \t \t \t break; 
 

 
\t \t \t \t case 5: 
 
\t \t \t \t var temppoint = data["node 10"][0]["2017-02-21 15:30"][0]; 
 
\t \t \t \t break; 
 

 
\t \t \t \t case 6: 
 
\t \t \t \t var temppoint = data["node 10"][0]["2017-02-18 3:50"][0]; 
 
\t \t \t \t break; 
 

 
\t \t \t \t case 7: 
 
\t \t \t \t var temppoint = data["node 10"][0]["2017-02-16 5:20"][0]; 
 
\t \t \t \t break; 
 

 
\t \t \t \t case 8: 
 
\t \t \t \t var temppoint = data["node 10"][0]["2017-02-19 6:10"][0]; 
 
\t \t \t \t break; 
 

 
\t \t \t \t case 9: 
 
\t \t \t \t var temppoint = data["node 10"][0]["2017-02-16 0:40"][0]; 
 
\t \t \t \t break; 
 
\t \t \t } 
 
\t \t \t //plotdata[i] = [datepoint, temppoint]; 
 
\t \t \t plotdata.push(new Array(datepoint, temppoint)); 
 
\t \t } 
 
\t \t console.log(plotdata) 
 

 
\t \t }) //End of getJSON 
 

 
\t \t var dataset = [ 
 
\t \t { 
 
\t \t \t label: "temperature", 
 
\t \t \t data: plotdata 
 
\t \t } 
 
\t \t \t ];//End of var dataset declaration 
 

 

 
\t \t $.plot($("#placeholder"), dataset, { 
 
\t \t \t series: { 
 
\t \t \t \t lines: { show: true }, 
 
\t \t \t \t points: {show: true }, 
 
\t \t \t }, 
 
\t \t \t grid: { 
 
\t \t \t \t hoverable: true, 
 
\t \t \t \t clickable: true 
 
\t \t \t }, 
 
\t \t \t xaxis: 
 
\t \t \t { 
 
\t \t \t \t mode: "time", 
 
\t \t \t \t timeformat: "%h: %M\n %m/%d/%y", 
 
\t \t \t \t min: (new Date("2017/02/19")).getTime(), 
 
\t \t \t \t max: (new Date("2017/02/21")).getTime() 
 
\t \t \t }, 
 

 
\t \t \t yaxis: 
 
\t \t \t { 
 
\t \t \t \t min: 50, max: 100, tickSize: 5 
 
\t \t \t } 
 
\t \t }); 
 

 
\t }) //End of (document).ready 
 

 
\t </script> 
 
</head> 
 
<body> 
 

 
\t <div id="content"> 
 

 
\t \t <div class="demo-container"> 
 
\t \t \t <div id="placeholder" class="demo-placeholder"></div> 
 
\t \t </div> 
 

 
\t </div> 
 

 
</body> 
 
</html>

这是从代码是什么结果: http://imgur.com/a/1lTvj

任何见解,以我所能做解决这个将非常感激。谢谢!

+0

请参阅[本](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call/14220323#14220323)的详细解释。 – Raidri

回答

0

事实证明,问题在于plot函数不在.getJSON函数中。作为主要编程知识基于C的人,我认为将.getJSON函数之外的plotdata变量绑定到该范围,但在.getJSON结束之后,plotdata变量显示大小为0,而不是我在.getJSON函数中设置了10个测试数据点。

为了解决这个问题,我只是将绘图函数移动到.getJSON函数中,现在它会保留对plotdata所做的更改并显示正确的图形。