用matplotlib画等高线图详解


Posted in Python onDecember 14, 2017

等高线图是在地理课中讲述山峰山谷时绘制的图形,在机器学习中也会被用在绘制梯度下降算法的图形中。

因为等高线的图有三个信息:x,y以及x,y所对应的高度值。

这个高度值的计算我们用一个函数来表述:

计算x,y坐标对应的高度值
def f(x, y):
 return (1-x/2+x**5+y**3) * np.exp(-x**2-y**2)

这个函数看起来挺复杂的,但我们这里只是为了能够获得一个高度值,因此其中函数代表什么意义不用关心,只要知道输入一个x,y,输出一个高度值就可以了。

要画出等高线,核心函数是plt.contourf(),但在这个函数中输入的参数是x,y对应的网格数据以及此网格对应的高度值,因此还需要调用np.meshgrid(x,y)把x,y值转换成网格数据才行,这样完整的代码如下:

画等高线的代码如下:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 计算x,y坐标对应的高度值
def f(x, y):
 return (1-x/2+x**5+y**3) * np.exp(-x**2-y**2)

# 生成x,y的数据
n = 256
x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)

# 把x,y数据生成mesh网格状的数据,因为等高线的显示是在网格的基础上添加上高度值
X, Y = np.meshgrid(x, y)

# 填充等高线
plt.contourf(X, Y, f(X, Y))
# 显示图表
plt.show()

上述代码显示的图形为:

用matplotlib画等高线图详解

这颜色有点太冷了,我们想显示热力图,那只要在plt.contourf()函数中添加属性cmap=plt.cm.hot就能显示热力图,其中cmap代表为color map,我们把color map映射成hot(热力图),此处关键代码为:

# 填充等高线
plt.contourf(X, Y, f(X, Y), cmap=plt.cm.hot)

显示的图为:

用matplotlib画等高线图详解

是否显示得挺热的。:)

上面是用plt.contourf()填充了等高线,但还有一种方式是可以直接显示等高线,而不是填充的方式,例如:

C = plt.contour(X, Y, f(X, Y), 20)

这里20代表的是显示等高线的密集程度,数值越大,画的等高线数就越多。

这样显示的图形为:

用matplotlib画等高线图详解

当然,如果我们不调用前面的plt.contourf()函数,则就会直接显示等高线。

最后我们想在等高线中添加上标注值:

plt.clabel(C, inline=True, fontsize=12)

显示的图为:

用matplotlib画等高线图详解

完整的代码为:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 计算x,y坐标对应的高度值
def f(x, y):
 return (1-x/2+x**5+y**3) * np.exp(-x**2-y**2)

# 生成x,y的数据
n = 256
x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)

# 把x,y数据生成mesh网格状的数据,因为等高线的显示是在网格的基础上添加上高度值
X, Y = np.meshgrid(x, y)

# 填充等高线
plt.contourf(X, Y, f(X, Y), 20, cmap=plt.cm.hot)
# 添加等高线
C = plt.contour(X, Y, f(X, Y), 20)
plt.clabel(C, inline=True, fontsize=12)
# 显示图表
plt.show()

总结

以上就是本文关于用matplotlib画等高线图详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python中wx将图标显示在右下角的脚本代码
Mar 08 Python
bpython 功能强大的Python shell
Feb 16 Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 Python
Python实现随机漫步功能
Jul 09 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
Python列表的切片实例讲解
Aug 20 Python
使用PyOpenGL绘制三维坐标系实例
Dec 24 Python
python动态文本进度条的实例代码
Jan 22 Python
python pyqtgraph 保存图片到本地的实例
Mar 14 Python
利用Python如何实时检测自身内存占用
May 09 Python
python数据抓取3种方法总结
Feb 07 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 #Python
python实现发送邮件功能代码
Dec 14 #Python
python正则实现计算器功能
Dec 14 #Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
Dec 14 #Python
python实现BackPropagation算法
Dec 14 #Python
python实现随机梯度下降(SGD)
Mar 24 #Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 #Python
You might like
PHP图片上传类带图片显示
2006/11/25 PHP
IStream与TStream之间的相互转换
2008/08/01 PHP
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
php 数学运算验证码实现代码
2009/10/11 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
2014/07/25 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python常用列表数据结构小结
2014/08/06 Python
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
JAVA中的关键字有什么特点
2014/03/07 面试题
连锁经营管理专业大学生求职信
2013/10/30 职场文书
运动会广播稿80字
2014/01/23 职场文书
小学英语教学反思案例
2014/02/04 职场文书
酒店前台辞职书
2015/02/26 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
mysql事务对效率的影响分析总结
2021/10/24 MySQL
Nginx的基本概念和原理
2022/03/21 Servers