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实现DES加密解密方法实例详解
Jun 30 Python
在Python程序员面试中被问的最多的10道题
Dec 05 Python
Python浅复制中对象生存周期实例分析
Apr 02 Python
Python实现登陆文件验证方法
Oct 06 Python
python频繁写入文件时提速的方法
Jun 26 Python
Python3 无重复字符的最长子串的实现
Oct 08 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
pytorch之ImageFolder使用详解
Jan 06 Python
keras .h5转移动端的.tflite文件实现方式
May 25 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
May 26 Python
Python3开发环境搭建详细教程
Jun 18 Python
Python如何在bool函数中取值
Sep 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
PHP安全编程之加密功能
2006/10/09 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
2015/12/31 PHP
客户端静态页面玩分页
2006/06/26 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
javascript折半查找详解
2015/01/26 Javascript
基于jquery实现左右按钮点击的图片切换效果
2021/01/27 Javascript
jquery利用拖拽方式在图片上添加热链接
2015/11/24 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
javascriptvoid(0)含义以及与"#"的区别讲解
2019/01/19 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
Python 数据结构之堆栈实例代码
2017/01/22 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
2018/04/26 Python
python getopt模块使用实例解析
2019/12/18 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
python opencv实现简易画图板
2020/08/27 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
巴西宠物商店:Cobasi
2019/04/19 全球购物
后勤人员自我评价怎么写
2013/09/19 职场文书
工业自动化专业毕业生推荐信
2013/11/18 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
高中校园广播稿
2014/10/21 职场文书
工程安全生产协议书
2014/11/21 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
忠诚与背叛观后感
2015/06/04 职场文书
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript
Python中的socket网络模块介绍
2022/07/23 Python