用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 相关文章推荐
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
Jun 21 Python
python实现知乎高颜值图片爬取
Aug 12 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
Aug 26 Python
python爬虫爬取幽默笑话网站
Oct 24 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
python isinstance函数用法详解
Feb 13 Python
学python爬虫能做什么
Jul 29 Python
Python lambda表达式原理及用法解析
Aug 18 Python
python openCV实现摄像头获取人脸图片
Aug 20 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 Python
vue.js刷新当前页面的实例讲解
Dec 29 Python
Python实现微信表情包炸群功能
Jan 28 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中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
php开发文档 会员收费1期
2012/08/14 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
php面向对象重点知识分享
2019/09/27 PHP
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
js代码实现轮播图
2020/05/04 Javascript
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
Python random模块用法解析及简单示例
2017/12/18 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
详解Python 正则表达式模块
2018/11/05 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
印度低票价航空公司:GoAir
2017/10/11 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
《与象共舞》教学反思
2014/02/24 职场文书
学校标语大全
2014/06/19 职场文书
支行行长岗位职责
2015/02/15 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python