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文件比较示例分享
Jan 10 Python
用python代码做configure文件
Jul 20 Python
python获取局域网占带宽最大3个ip的方法
Jul 09 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
python3实现基于用户的协同过滤
May 31 Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
Sep 25 Python
Python监控服务器实用工具psutil使用解析
Dec 19 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
Mar 06 Python
Python爬虫之Selenium库的使用方法
Jan 03 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
Jan 08 Python
tensorflow2.0教程之Keras快速入门
Feb 20 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开启安全模式后禁用的函数集合
2011/06/26 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
2014/01/14 PHP
详解PHP原生DOM对象操作XML的方法
2016/10/17 PHP
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
Js切换功能的简单方法
2010/11/23 Javascript
javascript获取当前的时间戳的方法汇总
2015/07/26 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
javascript学习之json入门
2016/12/22 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
详解js模板引擎art template数组渲染的方法
2018/10/09 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
django使用LDAP验证的方法示例
2018/12/10 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
Django中的AutoField字段使用
2020/05/18 Python
python 写一个文件分发小程序
2020/12/05 Python
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
化学专业毕业生自荐信
2013/11/15 职场文书
生物学学生自我评价
2014/01/17 职场文书
商场促销活动总结
2014/07/10 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
办公室禁烟通知
2015/04/23 职场文书
Python 数据可视化之Bokeh详解
2021/11/02 Python
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers