赞
踩
最近投SCI论文的时候,有些实验结果需要热力图展示,所以专门试了一下如何用python绘制热力图,发现简单好用,下面分享给大家具体方法。
需要安装pandas、seaborn、matplotlib安装包依赖,均用pip一键安装即可,然后导入相关包。
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt
具体实现代码如下,代码中的注释部分包括修改字体大小,修改具体内容、行列标签等:
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- # Author thesky
- import pandas as pd
- import seaborn as sns
- import matplotlib.pyplot as plt
-
- # 设置中文字体
- plt.rcParams['font.family'] = 'SimHei'
-
- # 数据
- data = [[91.1, 93.6, 93.8],
- [91.4, 93.7, 93.6],
- [92.6, 93.7, 93.6],
- [93.6, 93.8, 93.5],
- [93.2, 93.6, 93.4]]
-
- # 创建 DataFrame
- df = pd.DataFrame(data, columns=['0.001', '0.0001', '0.00001'], index=['1.0', '0.1', '0.01', '0.001', '0.0001'])
-
- # 制作热力图
- plt.figure(figsize=(10, 7))
- sns.set(font_scale=1.2) # 设置字体比例
- # custom_colors = sns.diverging_palette(20, 220, n=256, as_cmap=True) # 创建自定义的调色板
- custom_colors = ["#8B4513", "#FF4500"] # 棕色和红色
- # 设置横轴和纵轴标签
- plt.xlabel('adv_eps', fontsize=20) # 设置标签字体大小
- plt.ylabel('adv_lr', fontsize=20)
- # heatmap = sns.heatmap(df, annot=True, cmap='YlGnBu', fmt='.1f') # 保留一位小数
- heatmap = sns.heatmap(df, annot=True, cmap='YlOrRd', fmt='.1f')
- # 设置横轴和纵轴标签
- plt.xlabel('adv_eps')
- plt.ylabel('adv_lr')
- # 添加标题
- plt.title('IMDB(Baseline 93.3)', fontsize=20)
-
- plt.show()
效果图如下:
上图是红色效果,值越大则红色深度越明显。若想改成其他颜色,只需修改这行代码:
heatmap = sns.heatmap(df, annot=True, cmap='YlOrRd', fmt='.1f')
修改为:
heatmap = sns.heatmap(df, annot=True, cmap='YlGnBu', fmt='.1f')
效果图如下:
具体实现过程中可以将代码中data改为自己数据,然后行列的标签根据自实际需要进行修改。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。