用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 切片和range()用法说明
Mar 24 Python
利用Python中的mock库对Python代码进行模拟测试
Apr 16 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
对numpy的array和python中自带的list之间相互转化详解
Apr 13 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
Django RBAC权限管理设计过程详解
Aug 06 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
Python Print实现在输出中插入变量的例子
Dec 25 Python
Python bytes string相互转换过程解析
Mar 05 Python
Python configparser模块操作代码实例
Jun 08 Python
Python中的变量与常量
Nov 11 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
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
nodeJS实现路由功能实例代码
2017/06/08 NodeJs
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
Python的print用法示例
2014/02/11 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
Python解决八皇后问题示例
2018/04/22 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
python Cartopy的基础使用详解
2020/11/01 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
骨干教师培训感言
2014/01/16 职场文书
观看《永远的雷锋》心得体会
2014/03/12 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
好人好事新闻稿
2015/07/17 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库