python3 matplotlib多个子图分别对应不同colorbar

matplotlib多个热力子图分别对应不同colorbar

代码如下

from matplotlib import pyplot as plt
import numpy as np

'''
颜色的选择:
'Accent', 'Accent_r', 'Blues', 'Blues_r', 'BrBG', 'BrBG_r', 'BuGn', 'BuGn_r', 'BuPu', 
'BuPu_r', 'CMRmap', 'CMRmap_r', 'Dark2', 'Dark2_r', 'GnBu', 'GnBu_r', 'Greens', 'Greens_r', 
'Greys', 'Greys_r', 'OrRd', 'OrRd_r', 'Oranges', 'Oranges_r', 'PRGn', 'PRGn_r', 'Paired', 
'Paired_r', 'Pastel1', 'Pastel1_r', 'Pastel2', 'Pastel2_r', 'PiYG', 'PiYG_r', 'PuBu', 'PuBuGn', 
'PuBuGn_r', 'PuBu_r', 'PuOr', 'PuOr_r', 'PuRd', 'PuRd_r', 'Purples', 'Purples_r', 'RdBu', 'RdBu_r', 
'RdGy', 'RdGy_r', 'RdPu', 'RdPu_r', 'RdYlBu', 'RdYlBu_r', 'RdYlGn', 'RdYlGn_r', 'Reds', 'Reds_r', 
'Set1', 'Set1_r', 'Set2', 'Set2_r', 'Set3', 'Set3_r', 'Spectral', 'Spectral_r', 'Wistia', 'Wistia_r',
 'YlGn', 'YlGnBu', 'YlGnBu_r', 'YlGn_r', 'YlOrBr', 'YlOrBr_r', 'YlOrRd', 'YlOrRd_r', 'afmhot', 'afmhot_r', 
 'autumn', 'autumn_r', 'binary', 'binary_r', 'bone', 'bone_r', 'brg', 'brg_r', 'bwr', 'bwr_r', 'cividis', 
 'cividis_r', 'cool', 'cool_r', 'coolwarm', 'coolwarm_r', 'copper', 'copper_r', 'cubehelix', 'cubehelix_r', 
 'flag', 'flag_r', 'gist_earth', 'gist_earth_r', 'gist_gray', 'gist_gray_r', 'gist_heat', 'gist_heat_r', 'gist_ncar', 
 'gist_ncar_r', 'gist_rainbow', 'gist_rainbow_r', 'gist_stern', 'gist_stern_r', 'gist_yarg', 'gist_yarg_r', 'gnuplot', 
 'gnuplot2', 'gnuplot2_r', 'gnuplot_r', 'gray', 'gray_r', 'hot', 'hot_r', 'hsv', 'hsv_r', 'inferno', 'inferno_r', 'jet', 
 'jet_r', 'magma', 'magma_r', 'nipy_spectral', 'nipy_spectral_r', 'ocean', 'ocean_r', 'pink', 'pink_r', 'plasma', 'plasma_r', 
 'prism', 'prism_r', 'rainbow', 'rainbow_r', 'seismic', 'seismic_r', 'spring', 'spring_r', 'summer', 'summer_r', 'tab10', 
 'tab10_r', 'tab20', 'tab20_r', 'tab20b', 'tab20b_r', 'tab20c', 'tab20c_r', 'terrain', 'terrain_r', 'turbo', 'turbo_r', 
 'twilight', 'twilight_r','twilight_shifted', 'twilight_shifted_r', 'viridis', 'viridis_r', 'winter', 'winter_r'

'''


def draw():
    # 定义热图的横纵坐标
    xLabel = ['0.1', '0.3', '0.5', '0.7', '0.9', '1']
    yLabel = ['0.001', '0.01', '0.1', '1']

    # 准备数据阶段

    k_data_25 = np.array([[0.9046, 0.9214, 0.9264, 0.9311, 0.9275, 0.9130],
                          [0.9136, 0.9188, 0.9252, 0.9283, 0.9275, 0.9135],
                          [0.9135, 0.9186, 0.9170, 0.9216, 0.9142, 0.9139],
                          [0.9172, 0.9247, 0.9314, 0.9385, 0.9357, 0.9156]])
    k_data_50 = np.array([[0.9147, 0.9154, 0.9270, 0.9364, 0.9271, 0.9114],
                          [0.9131, 0.9177, 0.9287, 0.9280, 0.9271, 0.9153],
                          [0.8887, 0.8849, 0.8969, 0.8995, 0.8943, 0.9149],
                          [0.9218, 0.9277, 0.9331, 0.9341, 0.9378, 0.9118]])
    k_data_75 = np.array([[0.9095, 0.9187, 0.9205, 0.9264, 0.9261, 0.9127],
                          [0.9130, 0.9106, 0.9240, 0.9322, 0.9285, 0.9138],
                          [0.8857, 0.8851, 0.8880, 0.8936, 0.8867, 0.9147],
                          [0.9181, 0.9217, 0.9308, 0.9355, 0.9377, 0.9104]])
    k_data_100 = np.array([[0.9154, 0.9146, 0.9228, 0.9278, 0.9296, 0.9116],
                           [0.9158, 0.9173, 0.9237, 0.9264, 0.9296, 0.9097],
                           [0.8860, 0.8878, 0.8859, 0.8879, 0.8877, 0.9141],
                           [0.9219, 0.9249, 0.9274, 0.9347, 0.9369, 0.9076]])

    # 作图阶段
    fig, ax = plt.subplots(2, 2, figsize=(15, 9), dpi=100)
    # 定义横纵坐标的刻度
    # ax1 = ax[0][0], ax2 = ax[0][1], ax3 = ax[1][0], ax4 = ax[1][1]

    # ax1
    ax[0][0].set_yticks(range(len(yLabel)))
    ax[0][0].set_yticklabels(yLabel)
    ax[0][0].set_xticks(range(len(xLabel)))
    ax[0][0].set_xticklabels(xLabel)
    # 作图并选择热图的颜色填充风格,这里选择YlGn
    im_25 = ax[0][0].imshow(k_data_25, cmap="YlGn")
    # 增加右侧的颜色刻度条
    # plt.colorbar(im_25)
    fig.colorbar(im_25, ax=ax[0][0])

    # 填充数字
    for i in range(len(yLabel)):
        for j in range(len(xLabel)):
            print('k_data_25[{},{}]:{}'.format(i, j, k_data_25[i, j]))
            ax[0][0].text(j, i, k_data_25[i, j],
                          ha="center", va="center", color="Orange")

    # 增加标题
    ax[0][0].set_title("AUC values", fontdict={'size': 16})
    ax[0][0].set_xlabel(r'$\gamma$', fontdict={'size': 16})
    ax[0][0].set_ylabel(r'$\beta$', rotation=0, fontdict={'size': 16})

    # ax2
    ax[0][1].set_yticks(range(len(yLabel)))
    ax[0][1].set_yticklabels(yLabel)
    ax[0][1].set_xticks(range(len(xLabel)))
    ax[0][1].set_xticklabels(xLabel)
    # 作图并选择热图的颜色填充风格,这里选择YlGn
    im_50 = ax[0][1].imshow(k_data_50, cmap="Blues")
    # 增加右侧的颜色刻度条
    # plt.colorbar(im_50)
    fig.colorbar(im_50, ax=ax[0][1])

    # 填充数字
    for i in range(len(yLabel)):
        for j in range(len(xLabel)):
            print('k_data_50[{},{}]:{}'.format(i, j, k_data_50[i, j]))
            ax[0][1].text(j, i, k_data_50[i, j],
                          ha="center", va="center", color="Orange")

    # 增加标题
    ax[0][1].set_title("AUC values", fontdict={'size': 16})
    ax[0][1].set_xlabel(r'$\gamma$', fontdict={'size': 16})
    ax[0][1].set_ylabel(r'$\beta$', rotation=0, fontdict={'size': 16})

    # ax3
    ax[1][0].set_yticks(range(len(yLabel)))
    ax[1][0].set_yticklabels(yLabel)
    ax[1][0].set_xticks(range(len(xLabel)))
    ax[1][0].set_xticklabels(xLabel)
    # 作图并选择热图的颜色填充风格,这里选择YlGn
    im_75 = ax[1][0].imshow(k_data_75, cmap="Blues")
    # 增加右侧的颜色刻度条
    # plt.colorbar(im_75)
    fig.colorbar(im_75, ax=ax[1][0])

    # 填充数字
    for i in range(len(yLabel)):
        for j in range(len(xLabel)):
            print('k_data_75[{},{}]:{}'.format(i, j, k_data_75[i, j]))
            ax[1][0].text(j, i, k_data_75[i, j],
                          ha="center", va="center", color="Orange")

    # 增加标题
    ax[1][0].set_title("AUC values", fontdict={'size': 16})
    ax[1][0].set_xlabel(r'$\gamma$', fontdict={'size': 16})
    ax[1][0].set_ylabel(r'$\beta$', rotation=0, fontdict={'size': 16})

    # ax4
    ax[1][1].set_yticks(range(len(yLabel)))
    ax[1][1].set_yticklabels(yLabel)
    ax[1][1].set_xticks(range(len(xLabel)))
    ax[1][1].set_xticklabels(xLabel)
    # 作图并选择热图的颜色填充风格,这里选择YlGn
    im_100 = ax[1][1].imshow(k_data_100, cmap="YlGn")
    # 增加右侧的颜色刻度条
    # plt.colorbar(im_100)
    fig.colorbar(im_100, ax=ax[1][1])

    # 填充数字
    for i in range(len(yLabel)):
        for j in range(len(xLabel)):
            print('k_data_100[{},{}]:{}'.format(i, j, k_data_100[i, j]))
            ax[1][1].text(j, i, k_data_100[i, j],
                          ha="center", va="center", color="Orange")

    # 增加标题
    ax[1][1].set_title("AUC values", fontdict={'size': 16})
    ax[1][1].set_xlabel(r'$\gamma$', fontdict={'size': 16})
    ax[1][1].set_ylabel(r'$\beta$', rotation=0, fontdict={'size': 16})

    # show
    # fig.colorbar(im_100, ax=ax.ravel().tolist())
    fig.tight_layout()
    plt.savefig('RNMFLP_AUC_on_params.pdf')
    plt.show()


d = draw()

效果图如下:

在这里插入图片描述

完结撒花!!!

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值