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 time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
Python WXPY实现微信监控报警功能的代码
Oct 20 Python
python好玩的项目—色情图片识别代码分享
Nov 07 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 Python
浅谈python实现Google翻译PDF,解决换行的问题
Nov 28 Python
正确理解Python中if __name__ == '__main__'
Jan 24 Python
python面向对象法实现图书管理系统
Apr 19 Python
python集合常见运算案例解析
Oct 17 Python
Python如何合并多个字典或映射
Jul 24 Python
Pygame框架实现飞机大战
Aug 07 Python
Python项目实战之使用Django框架实现支付宝付款功能
Feb 23 Python
PYTHON InceptionV3模型的复现详解
May 06 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
laravel 4安装及入门图文教程
2014/10/29 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
PHP register_shutdown_function()函数的使用示例
2015/06/23 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
ie focus bug 解决方法
2009/09/03 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
JavaScript 事件系统
2010/07/22 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
使用js 设置url参数
2013/07/08 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
js中生成map对象的方法
2014/01/09 Javascript
SeaJS 与 RequireJS 的差异对比
2014/12/08 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
深入学习python的yield和generator
2016/03/10 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
小学校园文化建设汇报材料
2014/08/19 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
Python中的 enumerate和zip详情
2022/05/30 Python