2020年10月16日
python:matplot animation
matplotで連続描画
matplotlib.pyplot.pause を利用することで、一定時間毎に描画内容を更新できる。
【使い方】
matplotlib.pyplot.pause(interval)
interval は更新インターバル[sec]を記載する。公式ページ。
matplotでアニメーション作成
pythonのmatplotを利用した描画アニメーションの作成のメモ
import itertools
import csv
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import psutil
from operator import itemgetter
max_xaxis = 100
with open("../input/image_block_print.csv",mode="r") as _f:
read_data = list(csv.reader(_f))
rect_list = []#[plt.Rectangle((x,y),1,1,fc="red") for x in range(3) for y in range(4)]
for row in read_data:
rect_list.append(plt.Rectangle((int(row[0])*5 + 15,5+int(row[1])*5),5,5,fc=row[2]))
def data_gen():
for cnt in itertools.count():
t = cnt / 10
#yield t, np.sin(2*np.pi*t) * np.exp(-t/10.)
mem = psutil.virtual_memory()
cpu = psutil.cpu_percent()
if t > max_xaxis:
t = round(t % max_xaxis,1)
yield t, cpu#mem.percent
def init():
ax.set_ylim(0, 100)
ax.set_xlim(0, max_xaxis)
del xdata[:]
del ydata[:]
line.set_data(xdata, ydata)
return line,
def init_scatter():
ax.clear()
ax.set_ylim(0, 100)
ax.set_xlim(0, max_xaxis)
ax.axes.xaxis.set_visible(False)
ax.axes.yaxis.set_visible(False)
#ax.grid()
fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2)
ax.grid()
xdata, ydata = [], []
rect_data = []
def run(data):
# update the data
t, y = data
xdata.append(t)
ydata.append(y)
if len(rect_list) > int(t*10):
rect_data.append(rect_list[int(t*10)])
else:
exit()
if len(xdata) > (max_xaxis * 10):
xdata.pop(0)
ydata.pop(0)
y_res = [x[0] for x in sorted(zip(ydata,xdata), key=lambda x:x[1])]
x_res = sorted(xdata)
xmin, xmax = ax.get_xlim()
if t >= xmax:
#ax.set_xlim(xmin, 2*xmax)
ax.figure.canvas.draw()
init_scatter()
#sct = ax.scatter(x_res,y_res)
for _rec in rect_data:
ax.add_patch(_rec)
#line.set_data(x_res, y_res)
return line,
ani = animation.FuncAnimation(fig, run, data_gen, interval=10, init_func=init, save_count=150)
ani.save('auto.html', writer='pillow')
plt.show()
画像csvは下の形式。
1行目がx座標、2行目はy座標、3行目は塗りつぶし色。
1,1,peru
2,1,peru
3,1,peru
4,1,peru
9,1,peru
10,1,peru
11,1,peru
12,1,peru
...
2,1,peru
3,1,peru
4,1,peru
9,1,peru
10,1,peru
11,1,peru
12,1,peru
...
作成動画youtube
https://www.youtube.com/watch?v=hB5TDc66PYw
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/10275881
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック