アニメーションが出力されない
pycharmのデバッグで連続描画をさせようと思ったのですが、IDEの右側のウィンドにpngとして出力されるだけで動画になってくれませんでした。同じスクリプトをターミナルから実行すると動画表示ができます。動画生成そのもののミソはfig.show()の代わりにfig.pause()を使うところです。
サンプルコードは
https://www.useful-python.com/matplotlib-realtime/
を流用させて頂いております。
どうもpycharmから動画表示するには、matplotlibのbackendというのを指定する必要があるようです。Intel mac Sonoma python3.12.4 の場合、下記の指定でIDEとは別ウィンドウにプロットが表示されました。
# モジュールの取得
import numpy as np
import matplotlib
from matplotlib.pyplot import subplots, pause
matplotlib.use("MacOSX") # !!これを追記!!かつブレークを貼る
# step1 データの作成
xs = []
y1 = []
y2 = []
fig, ax = subplots()
# プロット
for x in np.linspace(0, 10, 100):
# 値を更新
xs.append(x)
y1.append(4 + 2 * np.sin(2 * x))
y2.append(4 + 2 * np.cos(2 * x))
# グラフ描画
line1, = ax.plot(xs, y1, color='C0', linestyle='-', label='Sample1')
line2, = ax.plot(xs, y2, color='C1', linestyle='--', label='Sample2')
# 0.1秒停止
pause(0.1)
# 描画したグラフを削除
line1.remove()
line2.remove()
useのところでブーレークポイントを貼っておかないと、なぜかプロットウィンドが表示されないことがあります。
windowが常に前に表示されるのは困る(追記)
上記のやり方だと、描画はできるもののウィンドウが更新されるたびに常に手前に出てきてしまいます。MacOSXの代わりにTkAggを指定する、という記事が見受けられます。ところがMacOSの場合、TkがPythonに入っていないようで、別にインストール必要がありました。
Pycharmのターミナルで python3 -v で現在実行されているpython のバージョンを確認して(
私の場合は3.10.14)
brew install python-tk@3.10
を実行してMacOSXの代わりにTkAggを指定すると、描画windowが出しゃばることはなくなりました。