用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实现获取某天是某个月中的第几周
Feb 11 Python
Python xlrd读取excel日期类型的2种方法
Apr 28 Python
Python面向对象编程基础解析(二)
Oct 26 Python
Python搜索引擎实现原理和方法
Nov 27 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
浅谈tensorflow中几个随机函数的用法
Jul 27 Python
Python使用googletrans报错的解决方法
Sep 25 Python
python获取交互式ssh shell的方法
Feb 14 Python
Python实现朴素贝叶斯的学习与分类过程解析
Aug 24 Python
python数据预处理 :数据抽样解析
Feb 24 Python
Python的scikit-image模块实例讲解
Dec 30 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
简单采集了yahoo的一些数据
2007/02/14 PHP
提升PHP性能的21种方法介绍
2013/06/25 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
2017/06/02 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
js 覆盖和重载 函数
2009/09/25 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
2015/03/24 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
2015/03/25 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
前端面试题及答案整理(二)
2016/08/26 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
python解包用法详解
2021/02/17 Python
介绍一下Python中webbrowser的用法
2013/05/07 面试题
口腔医学技术应届生求职信
2013/11/09 职场文书
终止合同协议书
2014/04/17 职场文书
团委竞选演讲稿
2014/04/24 职场文书
青安岗事迹材料
2014/05/14 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
实习介绍信模板
2015/01/30 职场文书
护士年终个人总结
2015/02/13 职场文书
公司员工奖惩制度
2015/08/04 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书
用Python selenium实现淘宝抢单机器人
2021/06/18 Python
Spring Bean是如何初始化的详解
2022/03/22 Java/Android