「ipython notebook」を使って簡単にタスク管理してみる。(3)

タスクの追加状況をグラフにしてみました。

以下を追加します。

import json
import pandas_highcharts.core
js_name_1 = '//code.highcharts.com/highcharts'
js_name_2 = '//code.highcharts.com/modules/exporting'
def graph_render(data):
  chart1 = pandas_highcharts.core.serialize(data, title=title_name, zoom="xy", output_type='dict')
  html = HTML('''
  <div id="chart1" style="min-width: 400px; height: 400px; margin: 0 auto"></div>
  <script>
    require.config({
      paths: {
        highcharts: '%s',
        exporting: '%s'
      }
    });
    require(['highcharts','exporting'], function(){
      $('#chart1').highcharts(%s);
    });
  </script>
  ''' %(js_name_1, js_name_2, json.dumps(chart1)))
  return html
    
def graph_task():
  data = read_task()
  data['datetime'] = pandas.to_datetime(data['created_at'])
  data['count'] = data['name'].count()
  data = data.groupby([data['datetime'].dt.year, data['datetime'].dt.month, data['datetime'].dt.day])['count'].count()
  data = pandas.DataFrame(data)
  return graph_render(data)

それで、graph_task() を呼び出すと

こんな感じに表示されます。
pandasのgroupbyで、日付ごとにグルーピングして
pandas_highchartsで、highchart用のjsonに変換。
それからhighchartsで、グラフを描画しています。

https://pypi.python.org/pypi/tasks-for-notebook
https://github.com/llby/tasks-for-notebook

こちらの方にも、そのうち追加したいと思います。