forpy と Jupyter Lab と Fortran Kernel
forpy を用いることによって、Fortran から python を呼び出して matplotlib の図を backend:WebAgg で別のブラウザタブには書き出せるが、show のところで inline 出力にするやり方が分からない。Backend を変えただけでは、Figure (640x480) 的なテキストメッセージは出るが絵は出ない。
一度、外部ファイルに書き出したうえで、Kernel の方の処理で inline に出すやり方は分かった。画像などは一度 png などにしてから base64 で ascii 文字?に変換して HTML 的に送り込んでいる。WEB 関連の知識がないのでわけわかめ。
BMP や GIF は Fortran から直接吐けるので、外部ファイル書き出し形式なら Kernel とセットで対応すれば Forpy 無しでも inline 図はゆけるだろう。
- 出版社/メーカー: ジェネオン エンタテインメント
- 発売日: 2003/03/21
- メディア: DVD
- クリック: 31回
- この商品を含むブログ (19件) を見る
メモ帳
- chcp 437 で英語モードにする(Windows)
- matplotrc で backend : module://ipykernel.pylab.backend_inline(環境変数でも行ける?)
- kernel.py に付加
このチュートリアルが一番簡単そうだが、幼女には難しい。
ipython-books.github.io
- HTML (文字列を HTML 解釈で出力)
contents は文字列。
data = {'text/html': contents} self.send_response(self.iopub_socket, 'display_data',{'data':data,'metadata':{}})
tmp.png というファイルがあったら無条件に出力して消す。IDL kernel から丸パクリw
#plot figure if p.returncode == 0 and os.path.exists('tmp.png'): image = open('tmp.png', 'rb').read() display_data=[] display_data.append({'image/png': b64encode(image).decode('ascii')}) for data in display_data: self.send_response(self.iopub_socket, 'display_data',{'data':data,'metadata':{}}) os.remove('tmp.png')
出力例
sin カーブまで蛇に見えてきた!蛇むかつく!
- 作者: ユキヲ
- 出版社/メーカー: フレックスコミックス
- 発売日: 2018/06/09
- メディア: コミック
- この商品を含むブログ (1件) を見る
- メディア:
- この商品を含むブログを見る