2016年12月10日土曜日

matplotlyb.pyplot で画像の上にプロット

動画ですべてを見せられればいいけれど、
未だに動画の入ったPDFは普及してない。

動画の説明にも静止画が必要で、うまく説明するには工夫が必要。
例えば動く物体の軌跡を表すのには、
1フレームを切り取って、そこにマーカーを重ねるといい。
ついでにテキストも書いておくといい。

これは、 PIL と matplotlib を使って、次のようにすればいい。
ただし、オリジナルの画像はこんなものだったとする。





In [1]:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
In [2]:
img = Image.open("./text_img.jpg")
In [3]:
plt.figure(figsize=(3.5,2.5))
plt.imshow(img)

plt.scatter([50],[30],s=100,facecolors="none",edgecolors="orange",lw=5)
plt.text(50+5,30,"Wow",color="orange",
         fontdict={"fontsize": 30,"fontweight":'bold',"ha":"left","va":"center"})
plt.axes().spines['top'].set_visible(False)
plt.axes().spines['left'].set_visible(False)
plt.axes().spines['bottom'].set_visible(False)
plt.axes().spines['right'].set_visible(False)
plt.xticks([])
plt.yticks([])
plt.savefig("./text_img_with_str",bbox_inches="tight",pad_inches=0.0)
In [4]:
# いろいろ計算するなら、
# img = np.array(img)
# としたほうが取扱が楽