用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 21 Python
python实现数通设备tftp备份配置文件示例
Apr 02 Python
使用基于Python的Tornado框架的HTTP客户端的教程
Apr 24 Python
python实现的简单抽奖系统实例
May 22 Python
python使用scrapy发送post请求的坑
Sep 04 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
Aug 02 Python
用python拟合等角螺线的实现示例
Dec 27 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 Python
Django vue前后端分离整合过程解析
Nov 20 Python
利用Opencv实现图片的油画特效实例
Feb 28 Python
python爬虫之selenium库的安装及使用教程
May 23 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 一个比较完善的简单文件上传
2010/03/25 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
php中final关键字用法分析
2016/12/07 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
JS backgroundImage控制
2009/05/19 Javascript
ExtJs之带图片的下拉列表框插件
2010/03/04 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
jquery replace方法去空格
2017/05/08 jQuery
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
2018/10/30 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
python 合并文件的具体实例
2013/08/08 Python
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
用CSS3实现无限循环的无缝滚动的示例代码
2017/11/01 HTML / CSS
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
教育专业自荐书范文
2013/12/17 职场文书
党员学习十八大感想
2014/01/17 职场文书
主管会计岗位责任制
2014/02/10 职场文书
信息管理应届生求职信
2014/03/07 职场文书
2015年母亲节寄语
2015/03/23 职场文书
工作简报格式范文
2015/07/21 职场文书
商业计划书之服装
2019/09/09 职场文书
Python中requests做接口测试的方法
2021/05/30 Python
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技