matplotlib基础绘图命令之imshow的使用


Posted in Python onAugust 13, 2020

在matplotlib中,imshow方法用于绘制热图,基本用法如下

import matplotlib.pyplot as plt
import numpy as np
np.random.seed(123456789)
data = np.random.rand(25).reshape(5, 5)
plt.imshow(data)

输出结果如下

matplotlib基础绘图命令之imshow的使用

imshow方法首先将二维数组的值标准化为0到1之间的值,然后根据指定的渐变色依次赋予每个单元格对应的颜色,就形成了热图。对于热图而言,通常我们还需要画出对应的图例,图例通过colorbar方法来实现,代码如下

plt.imshow(data)
plt.colorbar()

输出结果如下

matplotlib基础绘图命令之imshow的使用

imshow方法常用的几个参数如下

1. cmap

cmap是colormap的简称,用于指定渐变色,默认的值为viridis, 在matplotlib中,内置了一系列的渐变色,用法如下 

plt.imshow(data, cmap='Greens')

输出结果如下

matplotlib基础绘图命令之imshow的使用

完整的内置colormap的列表见如下链接

https://matplotlib.org/tutorials/colors/colormaps.html

2. aspect

aspect用于指定热图的单元格的大小,默认值为equal,此时单元格用于是一个方块,当设置为auto时,会根据画布的大小动态调整单元格的大小,用法如下

plt.imshow(data, aspect='auto')

输出结果如下

matplotlib基础绘图命令之imshow的使用

3. alpha

alpha参数用于指定透明度,用法如下

plt.imshow(data, alpha=0.8)

输出结果如下

matplotlib基础绘图命令之imshow的使用

4. origin

orign参数指定绘制热图时的方向,默认值为upper,  此时热图的右上角为(0, 0), 当设置为lower时,热图的左下角为(0,0), 用法如下

plt.imshow(data, origin='lower')

输出结果如下

matplotlib基础绘图命令之imshow的使用

5. vmin和vmax

vmin和vmax参数用于限定数值的范围,只将vmin和vmax之间的值进行映射,用法如下

plt.imshow(data, vmin=-0.8, vmax=0.8)
plt.colorbar()

输出结果如下

matplotlib基础绘图命令之imshow的使用

6. interpolation

interprolation参数控制热图的显示形式,是一个较难理解的参数,同样的数据,不同取值对应的热图形式如下

matplotlib基础绘图命令之imshow的使用

在日常使用而言,nearest和None是应用的最多的。

7. extent

extent参数指定热图x轴和y轴的极值,取值为一个长度为4的元组或列表,其中,前两个数值对应x轴的最小值和最大值,后两个参数对应y轴的最小值和最大值,用法如下

plt.imshow(data, extent=(-0.5, 4.5, 4.5, -0.5))

输出结果如下

matplotlib基础绘图命令之imshow的使用

可以看到,上述代码的输出和默认输出完全一致。其实, extent和origin两个参数是相互关联的,origin参数的值为upper时,extent参数的默认值如下

(-0.5, ncol(data) - 0.5, nrow(data)-0.5, 0.5)

当origin参数的值为lower时,extent参数的默认值如下

(-0.5, ncol(data) - 0.5, -0.5, nrow(data)-0.5)

修改extent参数的值,图中单元格对应的刻度会发生变化,示意如下

plt.imshow(data,extent=(-0.5,5.5,-5.5,0.5))

输出结果如下

matplotlib基础绘图命令之imshow的使用

大多数的情况下,我们都不需要自己来手动指定extent参数的值。

在绘制热图时,还可以结合xlim和ylim参数,来为热图的周围增加空隙,代码如下

plt.imshow(data)
plt.xlim(-1, 5)
plt.ylim(5, -1)
plt.colorbar()

输出结果如下

matplotlib基础绘图命令之imshow的使用

相比R语言中的热图,matplotlib中的热图没有聚类树的功能,需要自己手动来实现,但是可以很方便的添加图例,而且受益于matplotlib灵活的基础功能,可以实现非常复杂的如图。

python使用plt.imshow在坐标轴上展示图片,坐标设置问题。

坐标默认是从上到下,从左到右,例如

matplotlib基础绘图命令之imshow的使用

matplotlib.pyplot.imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, 
             vmin=None, vmax=None, origin=None, extent=None, shape=None, 
             filternorm=1, filterrad=4.0, imlim=None, resample=None, 
             url=None, hold=None, data=None, **kwargs

他的参数很多,找了很久,才发现,应该是设置origin参数。

origin : [‘upper' | ‘lower'], optional, default: None
  Place the [0,0] index of the array in the upper left or lower left corner of the axes. 
  If None, default to rc image.origin.

origin=‘lower',就得到如下图:

matplotlib基础绘图命令之imshow的使用

到此这篇关于matplotlib基础绘图命令之imshow的使用的文章就介绍到这了,更多相关matplotlib imshow内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python 自动提交和抓取网页
Jul 13 Python
python中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
使用python删除nginx缓存文件示例(python文件操作)
Mar 26 Python
Python爬虫抓取手机APP的传输数据
Jan 22 Python
Python语言实现获取主机名根据端口杀死进程
Mar 31 Python
Python 异常处理的实例详解
Sep 11 Python
python3 拼接字符串的7种方法
Sep 12 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
Oct 31 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
python移位运算的实现
Jul 15 Python
python实现一个函数版的名片管理系统过程解析
Aug 27 Python
教你怎么用Python操作MySql数据库
May 31 Python
使用jupyter notebook运行python和R的步骤
Aug 13 #Python
matplotlib基础绘图命令之errorbar的使用
Aug 13 #Python
Python如何读写CSV文件
Aug 13 #Python
区分python中的进程与线程
Aug 13 #Python
python判断一个变量是否已经设置的方法
Aug 13 #Python
vscode+PyQt5安装详解步骤
Aug 12 #Python
python使用列表的最佳方案
Aug 12 #Python
You might like
在JavaScript中调用php程序
2009/03/09 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
js判断样式className同时增加class或删除class
2013/01/30 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
JavaScript之解构赋值的理解
2019/01/30 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
python 性能提升的几种方法
2016/07/15 Python
python删除某个字符
2018/03/19 Python
python pygame实现2048游戏
2018/11/20 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
Python类反射机制使用实例解析
2019/12/30 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
scrapy-splash简单使用详解
2021/02/21 Python
采购部岗位职责
2013/11/24 职场文书
小学校园活动策划
2014/01/30 职场文书
反邪教警示教育方案
2014/05/13 职场文书
表扬稿范文
2015/01/17 职场文书
环保建议书范文
2015/09/14 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
创业计划书之物流运送
2019/09/17 职场文书
php将xml转化对象的实例详解
2021/11/17 PHP
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技