【画图】Python绘制热力图方法以及保存不全问题(seaborn.heatmap)
0 前言
鉴于Matlab画图已经被封,自此画图战线全部转移到Python上来,这篇博客描述了Python画热力图的方法以及我踩到的坑。
1 程序
1.1 导入包
这里使用seaborn的heatmap函数绘制
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
1.2 载入CSV文件
这里替换自己要画的矩阵,选择好index_col。及矩阵的每一行每一列是什么,要考虑好。
df_2 = pd.read_csv('HeatMap.csv',index_col='Model')
1.3 绘制热力图
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
p1 = sns.heatmap(df_2,annot=True,ax=ax)
ax.set_title('Heat Map')
ax.set_xlabel('')
ax.set_ylabel('')
1.4 保存
先获取活动图,再用savefig保存
s1 = p1.get_figure()
s1.savefig('HeatMap.jpg',dpi=300,bbox_inches='tight')
2 踩到的坑
2.1 CSV文件格式问题
首先是CSV文件编码,最好不要直接把excel重命名成csv,而是另存为csv,因为excel的编码方式与CSV不同,如果直接重命名可能导致read_csv函数爆编码错误。
CSV文件内容问题,尤其是矩阵各行各列的标题,可以不保留标题,后续再使用函数添加,也可以在CSV文件中定义好,读取的时候选择好index_col。
2.2 画图问题
变量ax的目的是确定好坐标轴,使用sns.heatmap指定好坐标轴,各参数的作用再后文参考文献中。
2.3 保存图像不完整问题
我遇到了保存图像不完整的问题,一开始以为是版本问题,后来发现,直接在jupyter notebook中显示时一切正常,但是保存后发现左边不完整,才知道是保存的问题。
s1.savefig('HeatMap.jpg',dpi=300,bbox_inches='tight')
在这里指定 bbox_inches='tight’后,Bug修复,一切结束。
3 参考
关于seaborn.heatmap函数的详细解读
参考:
[1]、函数解读:看这里
[2]、保存不完整,看这里
seaborn.heatmap(data, vmin=None, vmax=None,cmap=None, center=None, robust=False, annot=None, fmt=’.2g’, annot_kws=None,linewidths=0, linecolor=’white’, cbar=True, cbar_kws=None,cbar_ax=None,square=False, xticklabels=’auto’, yticklabels=’auto’,mask=None, ax=None,**kwargs)
(1)热力图输入数据参数:
data:矩阵数据集,可以是numpy的数组(array),也可以是pandas的DataFrame。如果是DataFrame,则df的index/column信息会分别对应到heatmap的columns和rows,即pt.index是热力图的行标,pt.columns是热力图的列标
(2)热力图矩阵块颜色参数: vmax,vmin:分别是热力图的颜色取值最大和最小范围,默认是根据data数据表里的取值确定
cmap:从数字到色彩空间的映射,取值是matplotlib包里的colormap名称或颜色对象,或者表示颜色的列表;改参数默认值:根据center参数设定
center:数据表取值有差异时,设置热力图的色彩中心对齐值;通过设置center值,可以调整生成的图像颜色的整体深浅;设置center数据时,如果有数据溢出,则手动设置的vmax、vmin会自动改变
robust:默认取值False;如果是False,且没设定vmin和vmax的值,热力图的颜色映射范围根据具有鲁棒性的分位数设定,而不是用极值设定
(3)热力图矩阵块注释参数:
annot(annotate的缩写):默认取值False;如果是True,在热力图每个方格写入数据;如果是矩阵,在热力图每个方格写入该矩阵对应位置数据
fmt:字符串格式代码,矩阵上标识数字的数据格式,比如保留小数点后几位数字
annot_kws:默认取值False;如果是True,设置热力图矩阵上数字的大小颜色字体,matplotlib包text类下的字体设置;官方文档:
(4)热力图矩阵块之间间隔及间隔线参数: linewidths:定义热力图里“表示两两特征关系的矩阵小块”之间的间隔大小
linecolor:切分热力图上每个矩阵小块的线的颜色,默认值是’white’
(5)热力图颜色刻度条参数: cbar:是否在热力图侧边绘制颜色刻度条,默认值是True
cbar_kws:热力图侧边绘制颜色刻度条时,相关字体设置,默认值是None
cbar_ax:热力图侧边绘制颜色刻度条时,刻度条位置设置,默认值是None
(6)square:设置热力图矩阵小块形状,默认值是False xticklabels,
yticklabels:xticklabels控制每列标签名的输出;yticklabels控制每行标签名的输出。默认值是auto。如果是True,则以DataFrame的列名作为标签名。如果是False,则不添加行标签名。如果是列表,则标签名改为列表中给的内容。如果是整数K,则在图上每隔K个标签进行一次标注。
如果是auto,则自动选择标签的标注间距,将标签名不重叠的部分(或全部)输出
mask:控制某个矩阵块是否显示出来。默认值是None。如果是布尔型的DataFrame,则将DataFrame里True的位置用白色覆盖掉
ax:设置作图的坐标轴,一般画多个子图时需要修改不同的子图的该值
**kwargs:All other keyword arguments are passed to ax.pcolormesh
【画图】Python绘制热力图方法以及保存不全问题(seaborn.heatmap)相关推荐
- 可视化篇(五)——— python绘制热力图及案例
可视化篇(五)--- python绘制热力图及案例 摘要 效果图 python代码 摘要 本文演示了如何通过python绘制热力图,并给出了其应用于展示数据之间相关性的案例供读者参考. 效果图 pyt ...
- python怎么画条形图-python绘制条形图方法代码详解
1.首先要绘制一个简单的条形图 import numpy as np import matplotlib.pyplot as plt from matplotlib import mlab from ...
- python画条形图-python绘制条形图方法代码详解
1.首先要绘制一个简单的条形图 import numpy as np import matplotlib.pyplot as plt from matplotlib import mlab from ...
- Python 绘制热力图
Python绘制热力图 reference 目标:绘制如下的 hotmap 或者 density-map ,把坐标和hot-value或者density-value替换为自己的数据,稍微改进就可以绘制 ...
- Python绘制热力图
最近在建模时有绘制相关系数矩阵热力图的需要,在此记录一下热力图的基本使用 这里使用seaborn库中的的heatmap完成热力图的绘制,我们可以根据图中不同方块颜色来判断变量之间相关系数的大小,接下来 ...
- Python 绘制热力图参数详解
同个人网站 https://www.serendipper-x.cn/,欢迎访问 ! 参数设置: (1)热力图输入数据参数: data:矩阵数据集,可以是numpy的数组(array),也可以是pan ...
- 使用Python绘制各种方法的词云图
import jieba from PIL import Image from wordcloud import WordCloud import numpy as np import matplot ...
- python相关系数热力图_python绘制热力图heatmap
本文实例为大家分享了python绘制热力图的具体代码,供大家参考,具体内容如下 python的热力图是用皮尔逊相关系数来查看两者之间的关联性. #encoding:utf-8 import numpy ...
- python热力图代码_python绘制热力图heatmap
本文实例为大家分享了python绘制热力图的具体代码,供大家参考,具体内容如下 python的热力图是用皮尔逊相关系数来查看两者之间的关联性. #encoding:utf-8 import numpy ...
最新文章
- Spark Streaming实践和优化
- java 媒体播放器_Java多媒体播放器(三)
- squid缓存服务器
- GitLab [Webhooks] 实现自动化服务器部署
- 050_Boolean对象
- Kettle使用_13 表输入并发运行与复制数量
- python3 tkinter电子书_Python3 Tkinter-Text
- ue4 设置intellisence_UE4.22编辑器界面操控设置(4)
- 【小记】-006--关于高度塌陷的问题
- java、c语言、python、c++的不同之处_总结几点C/C++、Java与Python的区别
- 200多个新颖独特的域名展示
- 工业机器人维保调查表_《工业机器人系统集成及维护》课程建设调研报告
- HDU 2340 - Obfuscation(dp)
- jsp版本的环境变量集合
- 结对-结对编项目作业名称-开发环境搭建过程
- linux 进程 cpu 100,清理linux中占用CPU 100%的病毒
- 电信猫的无线无法连接服务器,光纤猫连接路由器无法上网怎么办
- 今日不谈股市, 谈谈财政部副部长廖晓军不降个税问题
- 写在2020.11.19 周四晚上
- 同步传输和异步传输原理与比较
热门文章
- [2018 徐州 网络赛|Hard to prepare ] 环形染色问题的公式解法
- 看完不会的来打我!已成功拿下字节、腾讯、脉脉offer,满满干货指导
- 升级版的工厂模式(外联配置文件+内用反射),体现多态好处(^-^) 【java基础-----多态好处】
- shell和Zsh和ohmyzsh
- 官方确认中国启动超导无轴陀螺空天载具研发
- 自家群晖开启永久免费图床,开始typora, picgo,markdown的美好生活
- android全屏命令,微信全屏表情指令2020安卓版-2020微信满屏幕表情指令软件v7.0.19 清爽版-007游戏网...
- Linux系统打开文件命令
- 后台getshell常用技巧
- Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)