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 相关文章推荐
Python3中的真除和Floor除法用法分析
Mar 16 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
Apr 11 Python
Python 实现选择排序的算法步骤
Apr 22 Python
如何使用Python的Requests包实现模拟登陆
Apr 27 Python
对Pyhon实现静态变量全局变量的方法详解
Jan 11 Python
Python实现的读取文件内容并写入其他文件操作示例
Apr 09 Python
django组合搜索实现过程详解(附代码)
Aug 06 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
多个版本的python共存时使用pip的正确做法
Oct 26 Python
Python GUI库Tkiner使用方法代码示例
Nov 27 Python
在Django中使用MQTT的方法
May 10 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实现下载功能的代码
2012/09/29 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
2017/04/18 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
2015/09/19 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
浅谈Python NLP入门教程
2017/12/25 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
python实现反转部分单向链表
2018/09/27 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
浅析Python的命名空间与作用域
2020/11/25 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
个人作风剖析材料
2014/02/02 职场文书
高中军训感言800字
2014/03/05 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
工地宣传标语
2014/06/18 职场文书
面试通知短信
2015/04/20 职场文书
英镑符号 £
2022/02/17 杂记
asyncio异步编程之Task对象详解
2022/03/13 Python
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js
Win11 BitLocker 驱动器加密
2022/04/19 数码科技