日付羅列からグラフ作成

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の使い方を勉強する