跑實驗須要畫heatmap,使用seaborn.heatmap挺方便的,可是在刻度和標籤字體設置上網上講的不是很清楚,本文主要記錄 ( x軸 / y軸 / colorbar ) 上的刻度ticks及標籤label的文本設置。python
python_version=2.7字體
數據格式用的pandas.DataFrame.spa
x_tick=['a','b','c'] y_tick=['x','y','z'] X=[[1,2,3],[4,5,6],[7,8,9]] data={} for i in range(3): data[x_tick[i]] = X[i] pd_data=pd.DataFrame(data,index=y_tick,columns=x_tick) print(pd_data)
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams['font.family'] = 'sans-serif' mpl.rcParams['font.sans-serif'] = 'NSimSun,Times New Roman' font = {'family': 'sans-serif', 'color': 'k', 'weight': 'normal', 'size': 20,} f, ax = plt.subplots(figsize=(8, 8)) cmap = sns.cm.rocket_r #colorbar顏色反轉 ax = sns.heatmap(pd_data, annot=True, ax=ax, fmt='.1f', cmap=cmap) #畫heatmap,具體參數能夠查文檔 plt.xlabel('x_label',fontsize=20, color='k') #x軸label的文本和字體大小 plt.ylabel('y_label',fontsize=20, color='k') #y軸label的文本和字體大小 plt.xticks(fontsize=20) #x軸刻度的字體大小(文本包含在pd_data中了) plt.yticks(fontsize=20) #y軸刻度的字體大小(文本包含在pd_data中了) plt.title('title',fontsize=20) #圖片標題文本和字體大小 #設置colorbar的刻度字體大小 cax = plt.gcf().axes[-1] cax.tick_params(labelsize=20) #設置colorbar的label文本和字體大小 cbar = ax.collections[0].colorbar cbar.set_label(r'$NMI$',fontdict=font) plt.show()
可能代碼上會存在冗餘,但起碼能夠對各個部分的文本內容和字體大小進行單獨設置了,已經知足個人需求了。code
有什麼更好的但願批評指正 _(:з」∠)_orm