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 中的 else详解
Apr 23 Python
python学习笔记之列表(list)与元组(tuple)详解
Nov 23 Python
Django 多语言教程的实现(i18n)
Jul 07 Python
解决python opencv无法显示图片的问题
Oct 28 Python
pymongo中聚合查询的使用方法
Mar 22 Python
如何利用Pyecharts可视化微信好友
Jul 04 Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 Python
django中瀑布流写法实例代码
Oct 14 Python
python图形用户接口实例详解
Dec 16 Python
python实现一个简单RPC框架的示例
Oct 28 Python
Matplotlib animation模块实现动态图
Feb 25 Python
教你如何使用Python Tkinter库制作记事本
Jun 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 strtotime 函数UNIX时间戳
2009/01/14 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
python+opencv实现动态物体追踪
2018/01/09 Python
Python I/O与进程的详细讲解
2019/03/08 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
python 求10个数的平均数实例
2019/12/16 Python
Python运行异常管理解决方案
2020/03/09 Python
QML用PathView实现轮播图
2020/06/03 Python
Keras实现DenseNet结构操作
2020/07/06 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
生产车间主管岗位职责
2013/12/28 职场文书
《高尔基和他的儿子》教学反思
2014/04/09 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
慰问信范文
2015/02/14 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python