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()
效果图如下:
完结撒花!!!