2020年12月7日月曜日

Jupyter notebooks + Kotlin で移動平均を描画する(その1): lets-plot-kotlin で線を描画する

このエントリは Fintalk Advent Calendar 2020 の7日目です。
今年は3つも割当たっているので、Covid-19 のデータで件数とその移動平均をグラフに描画する、というのを3回シリーズでやりたいと思います。
Jupyter notebooks + python でやる方法はいっぱい情報があると思うので、ここでは Kotlin でやっていきます。


Kotlin + Jupyter notebooks については去年の Fintalk Advent Calendar のエントリとして書きました。
Kotlin + Jupyter notebooks で給与の額面から手取りを求めてみる

時間が経ってるので、今回の Kotlin + Jupyter notebooks のセットアップ手順を載せておきます。
  1. $ python3 -m venv venv  
  2. $ source venv/bin/activate  
  3.   
  4. (venv) $ pip install --upgrade pip setuptools  
  5. (venv) $ pip install numpy scipy matplotlib Pillow ipython[all]  
  6. (venv) $ pip install jupyter  
  7.   
  8. 以前の kotlin kernel が残っていたので venv の方をみるように一度削除    
  9. (venv) $ jupyter kernelspec list  
  10. (venv) $ jupyter kernelspec uninstall kotlin  
  11. (venv) $ pip install kotlin-jupyter-kernel  
  12.   
  13. (venv) $ jupyter notebook  


グラフの描画には lets-plot-kotlin を使います。
Kotlin Jupyter Kernel にバンドルされていて一緒にインストール&セットアップがされているので
  1. %use lets-plot  
だけで使えます。
  1. lets_plot(data)  
でプロットを作成し、これにレイヤーを追加していきます。

lets_plot() に渡すデータの型は Map<*, *> です。

例えばこんな感じ。
  1. val data = mapOf(  
  2.     "x" to listOf(0123),  
  3.     "y" to listOf(1524)  
  4. )  
これは表にするとこういうデータに対応しています。

xy
01
15
22
34


点を描画するレイヤーを追加するには geom_point() を使います。

lambda(この中の this は PointMapping) で x軸、y軸のデータを Map の key 名で指定します。
  1. %use lets-plot  
  2.   
  3. val data = mapOf(  
  4.     "x" to listOf(0123),  
  5.     "y" to listOf(1524)  
  6. )  
  7.   
  8. lets_plot(data) + geom_point(data, size=5) { x = "x"; y ="y" }  


線を描画するレイヤーを追加するには geom_line() を使います。


点と線両方描画したいなら、両方のレイヤーを追加すればOKです。


0 件のコメント:

コメントを投稿