2014-01-07 39 views
0

我需要創建一個圖表使用谷歌圖表與xAxis代表日期時間和yAxis代表我的傳感器溫度。谷歌圖表xAxis必須包含日期時間

我它與Java

下面結合是我的代碼:

<script type="text/javascript"> 
     google.load("visualization", "1", {packages:["corechart"]}); 
     google.setOnLoadCallback(drawChart); 
     function drawChart() { 
      var data = new google.visualization.DataTable(); 
      data.addColumn('datetime', 'Date'); 
      data.addColumn('number', 'Temperature'); 

     <% 
      for (MyDateTimeFormat key : hm.keySet()) { 
       out.print("data.addRow([new Date("+key.year+","+key.month+","+key.day+","+key.hour+","+key.minute+","+key.second+"), "+hm.get(key)+"]);"); 
      }%> 

     var options = { 
      title: '<% out.print(((ConfigItemTemperatureSensor)item).getId()+" P"+((ConfigItemTemperatureSensor)item).getPort()+((ConfigItemTemperatureSensor)item).getPin()+" "+((ConfigItemTemperatureSensor)item).getName()); %>' 
     }; 

     var chart = new google.visualization.LineChart(document.getElementById('chart_div')); 
     chart.draw(data, options); 
     } 
    </script> 

MyDateTimeFormat的值如下:

MyDateTimeFormat [year=2014, month=01, day=07, hour=17, minute=05, second=56] 
MyDateTimeFormat [year=2014, month=01, day=07, hour=17, minute=06, second=01] 
MyDateTimeFormat [year=2014, month=01, day=07, hour=17, minute=06, second=06] 
MyDateTimeFormat [year=2014, month=01, day=07, hour=17, minute=06, second=11] 
MyDateTimeFormat [year=2014, month=01, day=07, hour=17, minute=06, second=16] 
MyDateTimeFormat [year=2014, month=01, day=07, hour=17, minute=06, second=21] 

,其結果是完全錯誤的: enter image description here

回答

1

看着你的l OOP用於填充圖表數據:

for (MyDateTimeFormat key : hm.keySet()) { 
      out.print("data.addRow([new Date("+key.year+","+key.month+","+key.day+","+key.hour+","+key.minute+","+key.second+"), "+hm.get(key)+"]);"); 
     }%> 

如果變量HM是一個HashMap,那麼這將是無序這或許可以解釋爲什麼圖表看起來它的方式。

你既可以將圖表更改爲散點圖或填充VAR 數據

+0

您也可以調用'data.sort(0);'來對javascript中的數據進行排序。 – asgallant

0

從大衛霍奇森前面的回答解釋了我的問題的原因之前排序鍵集。

要知道像HashMap這樣的集合中元素的插入順序是不可能的。如果你想知道這個順序,你可以使用LinkedHashMap。就我而言,這個班級解決了這個問題。

LinkedHashMap與HashMap相似,它們唯一的區別是LinkedHashMap知道插入順序。

謝謝大衛霍奇森!

相關問題