将数组以彩色图片的形式展现

发布时间:2023年12月20日

plt.imshow可以将数组的值以图片的形式展示出来,数组的值对应着不同的颜色深浅。比如一个2X2的数组,图片里的小方块也会有2X2个。

案例1结果

案例1代码

import numpy as np
import matplotlib.pyplot as plt

x = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8]])
plt.imshow(x, cmap='RdBu')
cb = plt.colorbar(label='color bar settings')
plt.show()

案例2结果

由于研究需要,生成了12通道27*27的tiff数据,想要可视化各个通道:

案例2代码

import tifffile
import matplotlib.pyplot as plt
import numpy as np

path = '-40_40528165_4108935_128266.tiff'
sample = tifffile.imread(path)  # (27,27,12)
sample_new = np.transpose(sample, (2, 0, 1))  # (12,27,27)
title = ['dF','waF','wbF','gF','fV','qxyz','SIG1','SSI','VS','Tx','Ty','Tz']

# 定义子图的行数和列数
rows = 3
cols = 4
# 创建一个新的图像窗口,并设置子图的排列方式
fig, axes = plt.subplots(rows, cols, figsize=(10, 8))
# 遍历每个通道的数据,并在相应的子图中绘制
for i, ax in enumerate(axes.flat):
    # 获取当前通道的数据
    channel_data = sample_new[i, :, :]

    # 绘制当前通道的图像
    ax.imshow(channel_data, cmap='RdBu',interpolation='bicubic')# camp是色彩映射,bilinear'双线性插值来平滑图像,减少小方块的边界显示。若要更平滑的效果,可尝试使用 'bicubic' 插值。
    ax.axis('off') #不显示坐标轴
    ax.set_title(title[i],y=-0.12) #设置子标题,y=-0.12的作用是将标题放于下方

# 调整子图之间的间距
plt.tight_layout()
# 显示图像
plt.show()

文章来源:https://blog.csdn.net/qq_46458188/article/details/135094089
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。