ブログ

割とコンピュータよりの情報をお届けします。

2018年8月20日

Pythonでplot遊び

matplotlibとxkcd()を試して遊びをしてみた。

順番にプロットを描いていく例。

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

fig = plt.figure()
img = []
plt.xkcd()
for a in range(50):
    item, = plt.plot(np.sin(np.linspace(0, a, num=a*5)), 'r')
    plt.title('Sinusoidal wave')
    img.append([item])
ani = animation.ArtistAnimation(fig, img)
ani.save('sani.mp4', writer="ffmpeg")
plt.show()

ffmpegが必要ならしい。ところでplt.plotを繰り返すと色が順番にかわっていく。
このほかのアニメーションを作るほうほうとしてはplotをメモリ上に書き出していきPILでアニメーションgifにまとめるというもの。

from matplotlib import pyplot as plt
import matplotlib.animation as animation
import numpy as np
from PIL import Image, ImageDraw
import io

fig = plt.figure()
img = []

plt.xkcd()
for a in range(50):
    plt.plot(np.sin(np.linspace(0, a, num=a*5)), 'r')
    plt.title('Sinusoidal wave')
    item = io.BytesIO()
    plt.savefig(item, format='png')
    item.seek(0)
    im = Image.open(item)
    im.show()
    item.close()
    img.append(im)
im = img[0]
im.save('out.gif', save_all=True, append_images=img)

xkcd()を使っていると線がずれていく(重ならない)問題が生じる。

≫ 続きを読む

2018/08/20 コンピュータ   TakeMe