colormap与colorbar应用

一,colormap

常见色度枚举值如下

colormap与colorbar应用_第1张图片

应用如下

img = cv2.applyColorMap(img, cv2.COLORMAP_JET)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

常用的COLORMAP_JET效果如下,该模式常用于生成热力图

colormap与colorbar应用_第2张图片

二,colorbar

colorbar所有色带如下

colormap与colorbar应用_第3张图片

应用如下

cmap = 'nipy_spectral'
plt.imshow(mask,cmap=plt.get_cmap(cmap))
plt.colorbar()
plt.show()

colormap与colorbar应用_第4张图片

拓展:基于gridspec.GridSpec生成多子图

在做一个项目的时候,需要gridspec.GridSpec生成多子图,其中还涉及到热力图,colorbar单独生成,这里做一个分享,鉴于项目隐私,隐去了一些信息,自己在写的时候可以根据注释调整代码

    fig = plt.figure()
    gs = gridspec.GridSpec(2, 3, width_ratios=[1, 1, 0.05], height_ratios=[1, 1], figure = fig, 
    wspace = 0.03, hspace = 0.03, left = 0.5, right = 1, bottom = 0.35, top = 1)  
    # 创建三子图,第三个子图用于存放色带, 设置两行是为了调整色带高度,不然色带高度和前面不一致, 从wspace到top都是调整子图位置
    ax1 = fig.add_subplot(gs[0])
    ax2 = fig.add_subplot(gs[1])
    cax = fig.add_subplot(gs[2])  # colorbar 绘图区
    font = {'family':'STIXGeneral', 'weight':'bold', 'size':8}  # 字体字号设置
    den = resize(Y, X)       # resize将两张不同的多维数组改成同一size
    ax1.set_yticks([0, 100, 200, 300, 400, 500, 600])
    ax1.tick_params(labelsize=4, labelrotation=45, pad = 0, length = 1.5)  # 同时设置x和y轴刻度字体大小并改变字体方向, pad调整坐标与坐标轴之间距离,length控制坐标长度
    # ax1.set_ylabel('highth', font)   # 设置坐标标题
    ax1.set_xticks([0, 100, 200, 300, 400, 500, 600]) # 将x轴放在顶部
    ax1.xaxis.set_label_position('top')  
    ax1.xaxis.tick_top()
    # ax1.set_xlabel('width', font)
    ax1.set_title('str', font, pad=3, y = -0.1)  # pad 控制 title到图之间的距离, y默认为1,标题在顶部,设置y数值控制标题位置
    ax1.get_title()
    ax1.imshow(X)
    
    ax2.axes.get_yaxis().set_visible(False)  # 不需要显示子图y轴的方式
    # ax2.set_yticks([0, 100, 200, 300, 400, 500, 600])
    ax2c = ax2.matshow(Y)  # 映射第三子图色条用
    ax2.tick_params(labelsize=4, labelrotation=45, pad = 0, length = 1.5)  # 同时设置x和y轴刻度字体大小并改变字体方向, pad调整坐标与坐标轴之间距离,length控制坐标长度
    # ax2.set_ylabel('highth', font)
    ax2.set_xticks([0, 100, 200, 300, 400, 500, 600])
    ax2.xaxis.set_label_position('top')
    ax2.xaxis.tick_top()
    # ax2.set_xlabel('width', font)
    ax2.set_title('str', font, pad = 3, y = -0.1)
    ax2.text(1, 80, 'str', fontsize=4, weight="bold", color = 'w')
    ax2.imshow(Y, cmap = 'nipy_spectral')
    
    plt.colorbar(ax2c, pad = 0.06, fraction=0.035, cax=cax)  # 在第三子图添加colorbar
    cax.tick_params(labelsize=4, labelrotation=45, pad = 0, length = 1.5)
    cax.set_ylabel('str', font, labelpad=0)   # labelpad到坐标轴的距离
    cax.yaxis.set_label_position('right')
	    filename = img_path.split('/')[-1]
    filename = filename.replace('.jpg', 'xxx.png')
    print('Save at', filename)
    plt.savefig('./path to save/{}'.format(filename), bbox_inches='tight', pad_inches=0.05, dpi=300)  # pad_inches为保存图像周边距离

 最终子图显示如下,部分关键信息隐去,请谅解

colormap与colorbar应用_第5张图片

你可能感兴趣的:(opencv,计算机视觉,人工智能,深度学习,图像处理)