Python+matplotlib实现绘制等高线图示例详解
作者:编程简单学 发布时间:2022-09-18 05:44:11
前言
我们在往期对matplotlib.pyplot()方法学习,到现在我们已经会绘制折线图、柱状图、散点等常规的图表啦(往期的内容如下,大家可以方便查看往期内容)
Python matplotlib底层原理解析
Python利用 matplotlib 绘制直方图
Python用 matplotlib 绘制柱状图
python 用matplotlib绘制折线图详情
在matplotlib.pyplot 中除了可以绘制常规图表如折线、柱状、散点等,还可以绘制常用在地理上的平面展示地型的等高线图
本期,我们将详细学习matplotlib 绘制等高线图相关属性的学习,let's go~
1. 等高线图概述
什么是等高线图?
等高线图又称为水平图,通过2D形式展示3D图像的图表
等高线图又称为等高地线图,将地表高度相同的点连成一个环线展示到平面曲线上
等高线图又称为Z切片图,因变量Z与自变量X,Y变化而变化
等高线图可以分为首曲线、计曲线、间曲线与助曲线
等高线图常用场景
等高线图常用在展示某地地形情况
等高线图也可以计算当地山地高低情况
等高线图常用于地质、地理勘察绘制而成
等高线图也可以用于绘制圆形、椭圆形等数学公式展示
绘制等高线图步骤
导入matplotlib.pyplot模块
准备数据,可以使用numpy/pandas整理数据
调用pyplot.contour()或者pyplot.contourf()绘制等高线
案例展示
等高线图绘制需要借助很多高中所学的三角函数、指数函数等公式,我们本期案例使用等高线方法汇总圆
案例数据准备
np.arrage()准备一系列连续的数据
np.meshgrid()将数据转换成矩阵
import numpy as np
# 定义一组连续的数据
x_value = np.arange(-5,5,0.1)
y_value = np.arange(-5,5,0.1)
# 转换成矩阵数据
x,y = np.meshgrid(x_value,y_value)
绘制等高线
import matplotlib.pyplot as plt
plt.contour(x,y,z)
plt.title("Display Contour")
plt.xlabel("x(m)")
plt.ylabel("y(m)")
plt.show()
plt.show()
2. 等高线图属性
设置等高线颜色
关键字:colors
取值范围:
表示颜色的英文单词:如红色"red"
表示颜色单词的简称如:红色"r",黄色"y"
RGB格式:十六进制格式如"#88c999";(r,g,b)元组形式
也可以传入颜色列表
设置等高线透明度
关键字:alpha
默认为1
取值范围为:0~1
设置等高线颜色级别
关键字:cmap
colors和cmap两个关键字不能同时提供
取值为:注册的颜色表明
形式如:"颜色表_r"
常用的有:'Accent', 'Accent_r', 'Blues', 'Blues_r', 'BrBG', 'BrBG_r', 'BuGn', 'BuGn_r', 'BuPu', 'BuPu_r', 'CMRmap', 'CMRmap_r', 'Dark2', 'Dark2_r', 'GnBu', 'GnBu_r', 'Greens'
设置等高线宽度
关键字:linewidths
默认为等高线宽度为1.5
取值可以float类型或者列表
设置等高线样式
关键字:linestyles
默认值为:solid
取值可选:{None, 'solid', 'dashed', 'dashdot', 'dotted'}
linestyles为None且线条为单色时,负轮廓的线条会设置成dashed
我们对上一节的等高线图添加一些属性
线条为红色,线条宽度逐渐增大,线条样式为dashed,透明度设置为0.5
```python
plt.contour(x,y,z,colors="r",
linestyles="dashed",
linewidths=np.arange(0.5,4,0.5),alpha=0.5)
```
传入colors列表
plt.contour(x,y,z,
colors=('r','green','blue',(1,1,0),"#afeeee","0.5"),
linewidths=np.arange(0.5,4,0.5))
为等高线图,设置cmap为红色系
z = np.exp(-x**2-y**2)
z1 = np.exp(-(x-1)**2-(y-1)**2)
Z = (z-z1)*2
plt.contour(x,y,Z,
cmap='afmhot_r',
linewidths=np.arange(0.5,4,0.5))
3. 显示轮廓标签
我们查看等高线图时,轮廓标签会辅助我们更好的查看图表。添加轮廓标签,我们需要借助clabe
pyplot.contour()绘制等高线方法,会返回QuadContourset
QuadContourset 包含level列表数据
使用pyplot.clabel()接受level列表数据标注在等高线上
x_value = np.arange(-3,3,0.025)
y_value = np.arange(-3,3,0.025)
x,y = np.meshgrid(x_value,y_value)
z = (1-x**2+y**5)*np.exp(-x**2-y**2)
cs = plt.contour(x,y,z,cmap="Blues_r",linewidths=np.arange(0.5,4,0.5))
plt.clabel(cs,fontsize=9,inline=True)
4. 填充颜色
通常在等高线图中,不同区域填充不一样的颜色,帮助我们查看图表时更好地理解
使用pyplot.contourf()对比同区域轮廓进行填充颜色
z = (1-x**2+y**5)*np.exp(-x**2-y**2)
cs = plt.contour(x,y,z,10,colors="b",linewidths=0.5)
plt.clabel(cs,fontsize=12,inline=True)
plt.contourf(x,y,z,10,cmap="Blues_r",alpha=0.75)
5. 添加颜色条说明
我们可以借助pyplot.colorbar()方法来添加颜色条说明
z = (x**2+y**5)*np.exp(-x**2-y**2)
z1 = np.exp(-(x-1)**2-(y-1)**2)
Z = (z-z1)*2
cs = plt.contour(x,y,Z,10,colors="black",linewidths=0.5)
plt.clabel(cs,fontsize=12,inline=True)
plt.contourf(x,y,Z,10,cmap="afmhot_r",alpha=0.5)
plt.colorbar(shrink=0.8)
总结
本期对matplotlib.pyplot 绘制等高线方法contour和contourf相关属性的学习。在绘制等高线图时,我们需要对三角函数、指数函数、正余弦函数等知识有一点了解,才能绘制出想要的图表
来源:https://blog.csdn.net/weixin_54556126/article/details/121439373


猜你喜欢
- 有时你提交过代码之后,发现一个地方改错了,你下次提交时不想保留上一次的记录;或者你上一次的commit message的描述有误,这时候你可
- 一、前置基础1. go 函数基础在Go语言中,函数的基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句。func 函数名
- 一、安装github:https://github.com/kubernetes-client/python安装pip install ku
- toString()方法的定义和用法:toString()方法可以把Number对象转换成字符串,并返回此字符串。点击可查看更多
- 本文实例为大家分享了js实现QQ邮箱邮件拖拽删除的具体代码,供大家参考,具体内容如下步骤分析:根据数据结构生成HTML结构全选和单选功能的实
- 什么是模板匹配模板匹配是指在当前图像A内寻找与图像B最相似的部分,可以理解找茬,但是这里是找出一样的信息。一般我们将图像A称为输入图像,将图
- 最近需要将使用keras训练的模型移植到手机上使用, 因此需要转换到tensorflow的二进制模型。折腾一下午,终于找到一个合适的方法,废
- 本文为大家分享了python八皇后问题的解决方法,供大家参考,具体内容如下题目:给定一个 N*N 正方形棋盘,在上面放置 N个棋子,又叫皇后
- 本文主要利用python的相关模块进行批量ping ,测试IP连通性。下面看具体代码(python3):'''遇到问
- 关联模型(多对多)多对多关系(抽象)例:一篇文章可能有多个关键词,一个关键词可能被多个文章使用。 关键词表:字段id主键字段keyword关
- 使用conda和pip批量安装Python包在debug Yolov5之前,需要按照其txt文件中指定的包的版本来指定安装工程需要的Pyth
- 上节我们了解了图形验证码的识别,简单的图形验证码我们可以直接利用 Tesserocr 来识别,但是近几年又出现了一些新型验证码,如滑动验证码
- 当需要存储很多同类型的不通过数据时可能需要使用到嵌套,先用一个例子说明嵌套的使用1、在列表中存储字典#假设年级里有一群国际化的学生,有黄皮肤
- 注意:什么路径不可改就搜索该路径进行删除注册表记录,然后重启电脑按 win键盘+R输入 regedit 进去注册表,点击计算机按“编辑”--
- 前面最近,看到不少小伙伴问pytorch如何保存和加载模型,其实这部分pytorch官网介绍的也是很清楚的,感兴趣的点击了解详情🥁🥁🥁但是肯
- 本文实例讲述了Python面向对象类的继承。分享给大家供大家参考,具体如下:一、概述面向对象编程 (OOP) 语言的一个主要功能就是“继承”
- 当请求 headers 中,添加一个name为 Accept,值为 application/json 的 header(也即“我”(浏览器)
- 视图是一种常用的数据库对象,它将查询的结果以虚拟表的形式存储在数据中。因为视图有非常多的优点:1,可以简化操作,2,可以建立前台和后台的缓冲
- Anaconda 是一个旗舰版的python安装包, 因为普通的python没有库, 如果需要安装一些重要的库, 要经常一个一个下载,会非常
- 一、前言:Thrift 是一种接口描述语言和二进制通信协议。以前也没接触过,最近有个项目需要建立自动化测试,这个项目之间的微服务都是通过 T