Python中怎么用matplotlib绘制等高线图,具体方法是什么

Admin 2022-06-23 群英技术资讯 579 次浏览

今天这篇给大家分享的知识是“Python中怎么用matplotlib绘制等高线图,具体方法是什么”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,对此分享发大家做个参考,希望这篇“Python中怎么用matplotlib绘制等高线图,具体方法是什么”文章能帮助大家解决问题。


 
在matplotlib.pyplot 中除了可以绘制常规图表如折线、柱状、散点等,还可以绘制常用在地理上的平面展示地型的等高线图

本期,我们将详细学习matplotlib 绘制等高线图相关属性的学习,let's go~

1. 等高线图概述

什么是等高线图?

  • 等高线图又称为水平图,通过2D形式展示3D图像的图表
  • 等高线图又称为等高地线图,将地表高度相同的点连成一个环线展示到平面曲线上
  • 等高线图又称为Z切片图,因变量Z与自变量X,Y变化而变化
  • 等高线图可以分为首曲线、计曲线、间曲线与助曲线

等高线图常用场景

  • 等高线图常用在展示某地地形情况
  • 等高线图也可以计算当地山地高低情况
  • 等高线图常用于地质、地理勘察绘制而成
  • 等高线图也可以用于绘制圆形、椭圆形等数学公式展示

绘制等高线图步骤

  1. 导入matplotlib.pyplot模块
  2. 准备数据,可以使用numpy/pandas整理数据
  3. 调用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相关属性的学习。在绘制等高线图时,我们需要对三角函数、指数函数、正余弦函数等知识有一点了解,才能绘制出想要的图表 


上述内容具有一定的借鉴价值,感兴趣的朋友可以参考,希望能对大家有帮助,想要了解更多"Python中怎么用matplotlib绘制等高线图,具体方法是什么"的内容,大家可以关注群英网络的其它相关文章。 群英智防CDN,智能加速解决方案

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服