用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实现周期性抓取网页内容的方法
Nov 04 Python
谈谈如何手动释放Python的内存
Dec 17 Python
关于Python中异常(Exception)的汇总
Jan 18 Python
Python类的动态修改的实例方法
Mar 24 Python
python中numpy包使用教程之数组和相关操作详解
Jul 30 Python
python做量化投资系列之比特币初始配置
Jan 23 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
Feb 10 Python
python交易记录整合交易类详解
Jul 03 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
如何在Win10系统使用Python3连接Hive
Oct 15 Python
详解Python中的for循环
Apr 30 Python
python缺失值填充方法示例代码
Dec 24 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中养成7个面向对象的好习惯
2010/01/28 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
jquery 防止表单重复提交代码
2010/01/21 Javascript
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
js验证账户名是否重复
2020/05/26 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
Python语言的12个基础知识点小结
2014/07/10 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
python使用tornado实现登录和登出
2018/07/28 Python
python读取各种文件数据方法解析
2018/12/29 Python
Python:slice与indices的用法
2019/11/25 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
python中用ggplot绘制画图实例讲解
2021/01/26 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
数据库笔试题
2013/05/09 面试题
启动一个线程是用run()还是start()
2016/12/25 面试题
董事长秘书岗位职责
2013/11/29 职场文书
医德医魂心得体会
2014/09/11 职场文书
安全教育培训心得体会
2016/01/15 职场文书
2019年农民幸福观调查的实践感悟
2019/12/19 职场文书
JavaScript前端面试组合函数
2022/06/21 Javascript