【matplotlib】plt.clf()とplt.cla()、plt.close()の違い[Python]

  • URLをコピーしました!
目次

matplotlib

前回、matplotlibでリアルタイムに変化するグラフを表示する方法を紹介しました。

今回は前回出てきた「plt.cla()」について、他の「plt.clf()」や「plt.close()」との違いを見てみましょう。

ということでまずは適当にグラフを用意しました。

import matplotlib.pyplot as plt
import random

x = range(10)
y = [random.randint(0,50) for _ in x]

fig = plt.figure()

plt.plot(x, y)

plt.show()

実行結果

それでは始めていきましょう。

plt.clf()

まずは一番使うだろう「plt.clf()」を見てみましょう。

import matplotlib.pyplot as plt
import random

x = range(10)
y = [random.randint(0,50) for _ in x]

fig = plt.figure()

plt.plot(x, y)

plt.clf()

plt.show()

実行結果
<Figure size 640x480 with 0 Axes>

「plt.clf()」では一応グラフエリアは確保されているようですが、「0 Axes」となっており、グラフ自体は全て消去されています。

ということで「fig = plt.figure()」でグラフエリアの確保だけされた状態と同じ状態になっています。

import matplotlib.pyplot as plt
import random

x = range(10)
y = [random.randint(0,50) for _ in x]

fig = plt.figure()

plt.show()

実行結果
<Figure size 640x480 with 0 Axes>

plt.cla()

次に「plt.cla()」を見てみましょう。

import matplotlib.pyplot as plt
import random

x = range(10)
y = [random.randint(0,50) for _ in x]

fig = plt.figure()

plt.plot(x, y)

plt.cla()

plt.show()

実行結果

「plt.cla()」ではグラフの軸は残り、中のデータは消去されました。

plt.close()

最後に「plt.close()」を見てみましょう。

import matplotlib.pyplot as plt
import random

x = range(10)
y = [random.randint(0,50) for _ in x]

fig = plt.figure()

plt.plot(x, y)

plt.close()

plt.show()

実行結果

実行しても何も起こりません。

つまりグラフエリアも含めて、全て消去された状態です。

ということで「plt.clf()」、「plt.cla()」、「plt.close()」をまとめてみるとこんな感じです。

plt.close()plt.clf()plt.cla()
データ消去消去消去
グラフエリア消去残る残る
消去消去残る

もうグラフを使わない場合は「plt.close()」、グラフエリアは使うけど全て書き直す場合は「plt.clf()」、軸を使い回す場合は「plt.cla()」という使い分けで良さそうです。

次回はmatplotlibでアニメーションを作る際にffmpegを選択できるように設定してみましょう。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次