Matplotlib的子图subplot 显示多图

本文详细介绍如何使用Matplotlib库将多个图像绘制在同一界面的不同子图中,包括基本的子图布局设置,以及如何在子图中展示不同类型的图像,如RGB图像、GBR图像、灰度图像和缩略图。

Matplotlib的可以把很多张图画到一个显示界面,这就设计到面板切分成一个一个子图。

直接指定划分方式和位置进行绘图。

#要生成两行两列,这是第一个图plt.subplot('行','列','编号')
plt.subplot(2,2,1) 
#以下等同
plt.subplot(221)

效果图:

实现代码:

import cv2
import numpy as np
from PIL import Image
import requests
from io import BytesIO
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

def ImageResize():
    path = "/Users/waldenz/Documents/Work/doc/TestImages/t3.png"
    img = cv2.imread(path)
    # cv2.namedWindow('img')
    # cv2.imshow('img',img)
    # cv2.waitKey()
    # plt.subplot(221)
    plt.subplot(2,2,1)
    # matplotlib 按照RGB顺序展示原图
    plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB)) 
    plt.subplot(222)
    # cv2默认的GBR显示图
    plt.imshow(img)
    plt.subplot(223)
    # 灰度图
    plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2GRAY))
    plt.subplot(224)
    # 32*32的缩略图
    plt.imshow(cv2.resize(img, (32, 32)))
    plt.show()

 

MatplotlibPython 中广泛使用的绘库,其强大的功能可以让用户在一个形窗口中同时展示形。以下是关于头歌平台上 Matplotlib 的使用教程与示例: ### 使用 `plt.subplot()` 创建 `plt.subplot()` 是创建的常用方法,语法如下: ```python import matplotlib.pyplot as plt import numpy as np x = np.arange(100)/10 ys = [np.sin(x), np.cos(x)] plt.figure(figsize=(12, 6)) # 创建第一个 plt.subplot(1, 2, 1) plt.plot(x, ys[0]) # 创建第二个 plt.subplot(1, 2, 2) plt.plot(x, ys[1]) plt.show() ``` 在上述代码中,`plt.subplot(1, 2, 1)` 表示创建一个 1 行 2 列的布局,并选择第一个进行绘制;`plt.subplot(1, 2, 2)` 则选择第二个进行绘制。 ### 使用 `fig.add_subplot()` 添加 可调用窗口的方法 `add_subplot` 来添加,位置用三元组来约束,例如 `(1, 2, 1)` 表示一行、两列坐标系中的第一个像,注意下标从 1 开始,示例如下: ```python import matplotlib.pyplot as plt import numpy as np x = np.arange(100)/10 ys = [np.sin(x), np.cos(x)] fig = plt.figure("subgraphs") for i in range(2): ax = fig.add_subplot(1, 2, i + 1) ax.plot(x, ys[i]) plt.show() ``` ### 绘制不同类型的 可以绘制不同类型的,如折线、柱状、饼等,示例代码如下: ```python import matplotlib.pyplot as plt import numpy as np x = np.arange(10) y1 = np.random.rand(10) y2 = np.random.rand(10) # 创建一个 2x2 的布局 plt.figure(figsize=(12, 12)) # 第一个:折线 plt.subplot(2, 2, 1) plt.plot(x, y1) plt.title('Line Plot') # 第二个:柱状 plt.subplot(2, 2, 2) plt.bar(x, y2) plt.title('Bar Plot') # 第三个:饼 plt.subplot(2, 2, 3) plt.pie(y1, labels=x) plt.title('Pie Plot') # 第四个:自定义组合 plt.subplot(2, 2, 4) plt.scatter(x, y1) plt.title('Scatter Plot') plt.show() ``` ### 绘制并保存 以下代码根据输入数据绘制不同的两个,并保存为图片: ```python import matplotlib matplotlib.use("Agg") import numpy as np import matplotlib.pyplot as plt def student(x): ''' 根据输入数据绘制不同的两个 :param x: 输入数据,类型为 array :return: None ''' plt.figure(figsize=(12, 12)) plt.subplot(1, 2, 1) plt.plot(x, x**2, '--r', linewidth=1, alpha=0.3) plt.subplot(1, 2, 2) plt.plot(x, np.log(x)) plt.savefig("Task1/img/T1.png") plt.show() x = np.linspace(1, 10, 100) student(x) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值