0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pycharmからmatplotlibで動的にグラフを表示

Last updated at Posted at 2024-06-15

アニメーションが出力されない

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が出しゃばることはなくなりました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?