用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中使用PyHook监听鼠标和键盘事件实例
Jul 18 Python
python魔法方法-自定义序列详解
Jul 21 Python
Python tornado队列示例-一个并发web爬虫代码分享
Jan 09 Python
python3 读写文件换行符的方法
Apr 09 Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 Python
python+pygame实现坦克大战
Sep 10 Python
wxPython实现文本框基础组件
Nov 18 Python
简单介绍django提供的加密算法
Dec 18 Python
python 使用递归实现打印一个数字的每一位示例
Feb 27 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 Python
Python configparser模块封装及构造配置文件
Aug 07 Python
python绘制云雨图raincloud plot
Aug 05 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动态生成虚拟现实VRML网页
2006/10/09 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
2021/03/09 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
js判断是否是手机页面
2017/03/17 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
查看python下OpenCV版本的方法
2018/08/03 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
python opencv摄像头的简单应用
2019/06/06 Python
python 求一个列表中所有元素的乘积实例
2019/06/11 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
团员年度个人总结
2015/02/26 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书