python画出热力图,热力图数值,修改字体,字体大小等 您所在的位置:网站首页 excel里的字体怎么调大一点 python画出热力图,热力图数值,修改字体,字体大小等

python画出热力图,热力图数值,修改字体,字体大小等

2023-10-16 23:31| 来源: 网络整理| 查看: 265

1.数据来源于excel,是一个7*5的矩阵 首先导入相应的包,读取excel

import os import matplotlib.pyplot as plt import matplotlib import pandas as pd import seaborn as sns from PIL import Image as ImagePIL, ImageFont, ImageDraw#设置保存图片的dpi df = pd.read_excel(r"333.xlsx",sheet_name='##') #相应的文件位置

!![df的形式] 2 图对应的横纵坐标,组成list;表中的数字为datafram形式,转换成二维数组

#纵坐标标签 list=[] for i in range(df.shape[0]): list.append(df['R2'][i]) row=list #横坐标标签 df.columns.values[1:] #dataframe转化成二维矩阵 df_array=df.iloc[:,1:].values

![在这里插入图片描述] 3.画图`

plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号 #创建一个画布 fig, ax = plt.subplots(figsize=(11,9))#设置画布大小 im=ax.imshow(df_array,cmap='Greys',aspect='auto')#cmap='Greys'),设置热力图颜色,一般默认为蓝黄色,aspect='auto'热力块大小随着画布大小自动变化,如果不设置的话为方框。 #create colorbar色条 cbar=ax.figure.colorbar(im, ax=ax) #colorbar的设置 cbar.ax.set_ylabel('score', rotation=-90, va="bottom",fontsize=18,fontname='Times New Roman')#colorbar标签为‘score’,纵向放置,字体大小为18,字体为新罗马字体 #color色条本身上刻度值大小及字体设置 cbar.ax.tick_params(labelsize=10) cbarlabels = cbar.ax.get_yticklabels() [label.set_fontname('Times New Roman') for label in cbarlabels] #热力图设置 ax.set_xticks(np.arange(len(df.columns.values[1:]))) ax.set_yticks(np.arange(len(row))) #用各自的列表项来标记他们 ax.set_xticklabels(df.columns.values[1:]) ax.set_yticklabels(row) #关闭网格并用白色加宽网格 for edge, spine in ax.spines.items(): spine.set_visible(False) ax.set_xticks(np.arange(column+1)-.5, minor=True) ax.set_yticks(np.arange(len(row)+1)-.5, minor=True) ax.grid(which="minor", color="w", linestyle='-', linewidth=3) ax.tick_params(which="minor", bottom=False, left=False) #添加每个热力块的具体数值,保留两位小数 for i in range(df.shape[0]): for j in range(1,df.shape[1]): text = ax.text(j-1,i,df.iloc[i,j].round(2),ha="center", va="center", color="w",fontsize=12,fontname='Times New Roman') #设置图例并且设置图例的字体及大小 #设置坐标刻度值的大小以及刻度值的字体 plt.tick_params(labelsize=15) labels = ax.get_xticklabels() + ax.get_yticklabels() [label.set_fontname('Times New Roman') for label in labels] #设置横纵坐标的名称及热力图名称以及对应字体格式 font1 = {'family' : 'Times New Roman', 'weight' : 'normal', 'size' : 20, } #横纵轴的名称 plt.xlabel('round',font1) plt.ylabel('value',font1) #热力图名称 ax.set_title('DX model score',font1) #图的输出 #将文件保存至文件中并且画出图,dpi设置高分辨率输出 plt.savefig('figure.eps',dpi=400) fig.tight_layout() plt.show()

最终形成图为 在这里插入图片描述4.另外heatmap可以直接画出热力图

import seaborn as sns import pandas as pd import matplotlib.pyplot as plt df = pd.read_excel(r"E:\通量数据\数据分析\分参数模型分析\全部点分模型R2汇总.xlsx",sheet_name='当雄').set_index('R2') fig, ax = plt.subplots(figsize = (9,9)) sns.heatmap(df,annot=True, vmax=1,vmin = 0.8, xticklabels= True, yticklabels= True, square=False, cmap=None) plt.show()

![heatmap包绘图效果] 至于后续的字体调整等,等有时间再探索



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有