Pyplot绘制多幅图形/多个数据的方法
记录Pyplot绘制多幅图形/多个数据的方法, 供以后查阅
# 数据预处理
import os
from skimage import io, transform
# from PIL import image
import matplotlib.pyplot as plt
import numpy as np
mask_path = '0.png'
img_path = '1.jpg'
img = np.array(io.imread(img_path))
mask = np.array(io.imread(mask_path))
img = transform.resize(img, mask.shape)
img_mask = img*(mask/255)
方法1
#分开绘制,生成一个figure对象供操作
fig = plt.figure(figsize=(24, 16))
ax1 = fig.add_subplot(1, 2, 1)
ax1.imshow(img)
ax1.set_title('source image')
ax2 = fig.add_subplot(1, 2, 2)
ax2.imshow(img_mask)
ax2.set_title('source image')
plt.show()
方法2
#直接操作plt
plt.subplot(121)
plt.imshow(img)
plt.title('source image')
plt.subplot(122)
plt.imshow(img)
plt.title('mask image')
plt.show()
最后的效果都是一样的
方法3
下列方法常用于绘制多个数据
import matplotlib.pyplot as plt
import numpy as np
import random
# 操作ax
fig, ax = plt.subplots(figsize=(6,4))
# plot连续绘制
x_axis = np.linspace(-10, 10)
y_axis = x_axis*3 + 4 + random.randint(0,1)*100
ax.set_title('Data A')
ax.plot(x_axis, y_axis, c='r', label='A')
# scatter散点图
x_axis = np.arange(1, 10)
y_axis = x_axis*x_axis + random.randint(0,1)*100
ax.set_title('Data B')
ax.scatter(x_axis, y_axis, c='b', marker='o', label='B')
ax.legend()
plt.title('DataA .vs DataB')
plt.show()