Python向け可視化ライブラリの調査【2020年1月版】
まとめ
Pythonから使える可視化ライブラリは様々なものが存在する。 OpenAI Gym界隈ではPygletが使われているが、ドキュメント・ネット上の情報量の点で不満がある。特別な事情がなければmatplotlibを使うのが無難。
背景
OpenAI Gymでは以下のような形で可視化できるが、どう実現しているのか気になった。そこで、Gymを含む強化学習ライブラリや、ロボットシミュレータなどが使用している可視化ライブラリを調査し、どの可視化ライブラリを使うべきかをまとめる。
調査結果
Open AI Gym
classic controlに関しては、Pygletを使用している。 PygletのAPIを叩いているというよりは、OpenGLのAPIを直打ちしている。 この方法だと、円や線は簡単に描けるが、文字を表示するのは面倒そう。
gym/rendering.py at master · openai/gym · GitHub
ロボット系に関してはMuJoCoを使用している。詳しくは調べていない。
MiniWorld (gym-miniworld)
これもPygletを使っている。3次元の可視化。OpenGL直打ちのところもGymと同じ。
gym-miniworld/opengl.py at master · maximecb/gym-miniworld · GitHub
Gym Go
以下のページを見てたら発見したライブラリ。
gym/environments.md at master · openai/gym · GitHub
例によってPygletを使っているが、これはPygletのAPIを叩いており、文字も簡単に表示できる。 ただ、後述するmatplotlibに比べると、Pygletはドキュメントやネット情報が少ないのがネック。
GymGo/rendering.py at master · aigagror/GymGo · GitHub
Gazebo (ROS)
ロボットのシミュレータであるGazeboではOgreを使っている。使ってみようかと思ったが、インストールが面倒で断念した。
その他の可視化ライブラリ
Panda3D
Pythonバインディングがあるゲームエンジン。condaやpipからインストールできるので楽。試してないけど。
VisPy
科学計算用の可視化ライブラリでインストールも楽だが、まだ未成熟なようで、OpenGLを熟知していないと使いこなせない模様。
matplotlib
みんな大好きmatplotlib。以下の記事のように簡単に可視化できる。 waregawa-log.hatenablog.com
なお、scientific visualizationに関する以下のmatplotlib本が2020年夏に出版予定。楽しみ。
結論
ドキュメントやネット情報の量を考慮すると、2020年1月現在ではmatplotlibで可視化するのが良いと思われる。実行速度などに不満があれば、PygletやOgreに手を出してみるのもよい。