用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中操作时间之mktime()方法的使用教程
May 22 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
May 29 Python
详解python里的命名规范
Jul 16 Python
Django中使用第三方登录的示例代码
Aug 20 Python
使用python将请求的requests headers参数格式化方法
Jan 02 Python
python生成带有表格的图片实例
Feb 03 Python
详解Python locals()的陷阱
Mar 26 Python
python 模拟贷款卡号生成规则过程解析
Aug 30 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
Python实现队列的方法示例小结【数组,链表】
Feb 22 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
Ajax请求PHP后台接口返回信息的实例代码
2018/08/21 PHP
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
深入理解python函数递归和生成器
2016/06/06 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
python 实现A*算法的示例代码
2018/08/13 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
如何理解Python中包的引入
2020/05/29 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
高中学生干部学习的自我评价
2014/02/21 职场文书
动员大会主持词
2014/03/20 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
考博导师推荐信范文
2015/03/27 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript