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中的print()输出
Apr 12 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
Aug 27 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
Oct 18 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
Jan 06 Python
python处理RSTP视频流过程解析
Jan 11 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 Python
一文详述 Python 中的 property 语法
Sep 01 Python
Python数据可视化常用4大绘图库原理详解
Oct 23 Python
Django用内置方法实现简单搜索功能的方法
Dec 18 Python
python如何发送带有附件、正文为HTML的邮件
Feb 27 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
php简单操作mysql数据库的类
2015/04/16 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
javascript动态加载三
2012/08/22 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
2019/09/19 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
django admin 后台实现三级联动的示例代码
2018/06/22 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
python递归实现快速排序
2018/08/18 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
pycharm的python_stubs问题
2020/04/08 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
副厂长岗位职责
2014/02/02 职场文书
亲子拓展活动方案
2014/02/20 职场文书
校园活动宣传方案
2014/03/28 职场文书
党建工作先进材料
2014/05/02 职场文书
会计稽核岗位职责
2015/04/13 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
Python基于百度AI实现抓取表情包
2021/06/27 Python