日付羅列からグラフ作成
2013/12/24-08:24,2013/12/26-12:38,...というデータを、月単位でまとめてカウント
(例:2013/12>5 2014/01>2 ...)
google chartに投げて、折れ線グラフ表示
カウント部分
入力(line)の先頭日付(最古)から月をループ(j) count_month << line.count{|x| x.index(j.strftime('%Y/%m'))}
簡単便利なブロック。
lineを先頭から見ていってindex引数に指定された日付があれば+1。
週の場合、先頭日付を曜日判定して、そこから日曜日までの差分塊と、以降日+6の塊
google chart部分
<script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", {packages:["corechart"]}); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable(#{配列}); var options = { title: '#{なにか}'}; var chart = new google.visualization.LineChart(document.getElementById('chart_div')); chart.draw(data, options); } </script>
LineChart指定で折れ線グラフ
配列は
['Month', 'Jan', 'Feb', 'Mar',...],
['2004', 5, 9, 2,...],
['2005', 4, 4, 3,...],
['2006', 4, 3, 3,...],
['2007', 1, 2, 8,...]
こんな形。
反省と今後
・スクリプトをprint<<えおfの中に書くと、何となく保守性と可読性が下がる気がする
・cgiの使い方を勉強する
・