はじめに
mrktさんがPyCallというライブラリを開発されているので、早速試してみました。
インストール
ソースコードがGitHubからダウンロードできます。
https://github.com/mrkn/pycall
2017年2月23日現在、開発中のブランチからダウンロードするとのことだったので、以下のコマンドで入手しました。
git clone -b eval https://github.com/mrkn/pycall.git
そこからGemのインストールに少々手こずってしまいましたが、以下の手順でインストールができました。
もっとスマートな方法をご存知の方がおられましたらご教示ください(汗)
# Gemファイルの作成
gem build pycall/pycall.gemspec
# Gemのインストール
gem install pycall-0.1.0.alpha.gem
# なぜかGemのフォルダ内が空っぽなので、とりあえず削除
rm -rf ~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pycall-0.1.0.alpha
# ダウンロードしたソースをコピー
mv pycall ~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pycall-0.1.0.alpha
ちなみに、僕はPythonをAnacondaでインストールして使い、Rubyはrbenvを使ってインストールしたものを利用しています。
とりあえずグラフを描画してみる
以下のコードでグラフを表示できました。
require 'pycall/import'
include PyCall::Import
pyimport 'numpy', as: 'np'
pyimport 'matplotlib.mlab', as: 'mlab'
pyimport 'matplotlib.pyplot', as: 'plt'
plt.plot.([1,3,4,6,7,9])
plt.plot.([3,2,4,1,5,0])
plt.show.()
iRuby Notebookでグラフを表示してみる
上記のソースコードをiRuby Notebookで実行すると、グラフを描画することはできるのですが、同じように別ウィンドウでグラフが表示されました。
しかも、その後の動作がちょっと不安定(汗)
これではちょっと困るので、以下のように変更。
require 'pycall/import'
include PyCall::Import
pyimport 'numpy', as: 'np'
pyimport 'matplotlib.mlab', as: 'mlab'
pyimport 'matplotlib.pyplot', as: 'plt'
plt.plot.([1,3,4,6,7,9])
plt.plot.([3,2,4,1,5,0])
# グラフを画像として保存
plt.savefig.("pycall.png")
plt.close.()
# 保存されたグラフの画像を読み込む
open("pycall.png")
インラインで表示させることができました。
グラフのサイズを変更してみる
指定しないと正方形のグラフが表示されたので、これを少し変更します。
require 'pycall/import'
include PyCall::Import
pyimport 'numpy', as: 'np'
pyimport 'matplotlib.mlab', as: 'mlab'
pyimport 'matplotlib.pyplot', as: 'plt'
plt.figure.(figsize: PyCall.tuple(8, 3))
plt.plot.([1,3,4,6,7,9])
plt.plot.([3,2,4,1,5,0])
# グラフを画像として保存
plt.savefig.("pycall.png")
plt.close.()
# 保存されたグラフの画像を読み込む
open("pycall.png")
できた!
次は機械学習を試してみたくなりますね(^-^)