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单元测试框架unittest使用方法讲解
Apr 13 Python
django1.8使用表单上传文件的实现方法
Nov 04 Python
Python基于csv模块实现读取与写入csv数据的方法
Jan 18 Python
python删除过期log文件操作实例解析
Jan 31 Python
python 控制Asterisk AMI接口外呼电话的例子
Aug 08 Python
Django使用消息提示简单的弹出个对话框实例
Nov 15 Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 Python
解决Keras 自定义层时遇到版本的问题
Jun 16 Python
学python需要去培训机构吗
Jul 01 Python
在django中查询获取数据,get, filter,all(),values()操作
Aug 09 Python
k-means & DBSCAN 总结
Apr 27 Python
python字典的元素访问实例详解
Jul 21 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
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
JavaScript定时器和优化的取消定时器方法
2015/07/03 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
Python实现扩展内置类型的方法分析
2017/10/16 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
医学生实习自荐信
2013/10/01 职场文书
教学实验楼管理制度
2014/02/01 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
《识字五》教学反思
2014/03/01 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
个人安全承诺书
2014/05/22 职场文书
2014最新版群众路线四风整改措施
2014/09/24 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
使用HttpSessionListener监听器实战
2022/03/17 Java/Android