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()

在这里插入图片描述

posted @ 2022-03-23 20:41  Janspiry  阅读(558)  评论(0编辑  收藏  举报