何かの濃度分布と粒子の分布を重ねて表示したい場合、粒子をpillow, 濃度分布をpyplotで描画させて、最後に重ねて表示させる。
from PIL import Image, ImageDraw
import numpy as np
import matplotlib.pyplot as plt
まず、濃度分布をnumpyの二次元配列で生成する
u = np.random.rand(10,10)
plt.imshow(u)
次に、粒子の分布を生成する
r = np.random.rand(100,2)*200
im = Image.new("RGB", (200, 200), (128, 128, 128))
draw = ImageDraw.Draw(im)
for i in range(100):
[x,y] = r[i]
draw.ellipse((x-3,y-3,x+3,y+3), fill=(0, 0, 255))
from IPython.display import display
display(im)
スケールを合わせるため濃度分布をリサイズし、粒子と重ねて表示する。
imU = Image.fromarray(u)
imU = imU.resize((200,200))
plt.imshow(np.array(imU), alpha = 0.5)
plt.imshow(np.array(im), alpha = 0.5)
plt.show()