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二叉搜索树与双向链表转换实现方法
Apr 29 Python
Python中asyncore异步模块的用法及实现httpclient的实例
Jun 28 Python
LRUCache的实现原理及利用python实现的方法
Nov 21 Python
python清除字符串中间空格的实例讲解
May 11 Python
python斐波那契数列的计算方法
Sep 27 Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
Aug 06 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
python创建文本文件的简单方法
Aug 30 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 03 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 xfocus防注入资料
2008/04/27 PHP
初学CAKEPHP 基础教程
2009/11/02 PHP
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
深入研究React中setState源码
2017/11/17 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
详解python3中socket套接字的编码问题解决
2017/07/01 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
Python3远程监控程序的实现方法
2019/07/15 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
行政助理岗位职责
2013/11/10 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
法制宣传标语集锦
2014/06/25 职场文书
师德师风自我评价范文
2014/09/11 职场文书
公务员党员评议表自我鉴定
2014/09/14 职场文书
统计学教授推荐信
2014/09/18 职场文书
调研报告的主要写法
2019/04/18 职场文书
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL