nashidos’s diary

アルゴリズムとか機械学習とか色々

matplotlib.animationでアニメーションが表示されないときの対処法

アニメーションが表示されない

matplotlib.animationでエラーは出ていないもののアニメーションが表示されずに困ったので、その解決法について記します。

アニメーションが表示されなかったのは以下のコードです。

挿入ソートをアニメーションで可視化しようとしていました。

import numpy as np
import matplotlib.pyplot as plt
import random
import matplotlib.animation as animation

fig = plt.figure()
ims = []

def insert_sort(arr):
    for i in range(1, len(arr)):
        j = i - 1
        ele = arr[i]
        while arr[j] > ele and j >= 0:
            arr[j + 1] = arr[j]
            j -= 1
        arr[j + 1] = ele
        im = plt.bar(x, y, color="Blue")
        ims.append(im)
    return arr

y = [i for i in range(1,20)]
x = [i for i in range(19)]
random.shuffle(y)
insert_sort(y)

ani = animation.ArtistAnimation(fig, ims, interval=100)
plt.show()

解決策

アニメーションが表示されなかったのは下記のコードが抜けていたのが原因でした。

%matplotlib nbagg

普段%matplotlib inlineはよく使いますが、アニメーションの場合はnbaggを使うようですね。

おわり