Python matplotlib 绘制等高线图

前言

我们在往期对matplotlib.pyplot()方法学习,到现在我们已经会绘制折线图、柱状图、散点等常规的图表啦(往期的内容如下,大家可以方便查看往期内容)

python入门到进阶,爬虫数据分析全套资料分享讲解 (#1)

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

Python matplotlib 绘制等高线图

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

  1. 等高线图概述

  2. 什么是等高线图?

  3. 等高线图又称为水平图,通过2D形式展示3D图像的图表
  4. 等高线图又称为等高地线图,将地表高度相同的点连成一个环线展示到平面曲线上
  5. 等高线图又称为Z切片图,因变量Z与自变量X,Y变化而变化
  6. 等高线图可以分为首曲线、计曲线、间曲线与助曲线
  7. 等高线图常用场景
  8. 等高线图常用在展示某地地形情况
  9. 等高线图也可以计算当地山地高低情况
  10. 等高线图常用于地质、地理勘察绘制而成
  11. 等高线图也可以用于绘制圆形、椭圆形等数学公式展示
  12. 绘制等高线图步骤
  13. 导入matplotlib.pyplot模块
  14. 准备数据,可以使用numpy/pandas整理数据
  15. 调用pyplot.contour()或者pyplot.contourf()绘制等高线
  16. 案例展示等高线图绘制需要借助很多高中所学的三角函数、指数函数等公式,我们本期案例使用等高线方法汇总圆
  17. 案例数据准备
    • 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()

Python matplotlib 绘制等高线图
  1. 等高线图属性

  2. 设置等高线颜色

  3. 关键字:colors
  4. 取值范围:
    • 表示颜色的英文单词:如红色”red”
    • 表示颜色单词的简称如:红色”r”,黄色”y”
    • RGB格式:十六进制格式如”#88c999″;(r,g,b)元组形式
    • 也可以传入颜色列表
  5. 设置等高线透明度:
  6. 关键字:alpha
  7. 默认为1
  8. 取值范围为:0~1
  9. 设置等高线颜色级别
  10. 关键字:cmap
  11. colors和cmap两个关键字不能同时提供
  12. 取值为:注册的颜色表明
    • 形式如:”颜色表_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’
  13. 设置等高线宽度
  14. 关键字:linewidths
  15. 默认为等高线宽度为1.5
  16. 取值可以float类型或者列表
  17. 设置等高线样式
  18. 关键字:linestyles
  19. 默认值为:solid
  20. 取值可选:{ None, ‘solid’, ‘dashed’, ‘dashdot’, ‘dotted’}
  21. linestyles为None且线条为单色时,负轮廓的线条会设置成dashed
  22. 我们对上一节的等高线图添加一些属性
  23. 线条为红色,线条宽度逐渐增大,线条样式为dashed,透明度设置为0.5
python
plt.contour(x,y,z,colors="r",
linestyles="dashed",
linewidths=np.arange(0.5,4,0.5),alpha=0.5)
</code></pre>
<p>复制代码</p>
<pre><code>
![Python matplotlib 绘制等高线图](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230809/8910c30f81074e618186e980c59119ab.png)

传入colors列表

</code></pre>
<p>plt.contour(x,y,z,
colors=('r','green','blue',(1,1,0),"#afeeee","0.5"),
linewidths=np.arange(0.5,4,0.5))</p>
<pre><code>
![Python matplotlib 绘制等高线图](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230809/eeb68f9eb2434a30806aa769fffdafda.png)

为等高线图,设置cmap为红色系

</code></pre>
<p>z = np.exp(-x<strong>2-y</strong>2)
z1 = np.exp(-(x-1)<strong>2-(y-1)</strong>2)
Z = (z-z1)*2</p>
<p>plt.contour(x,y,Z,
cmap='afmhot_r',
linewidths=np.arange(0.5,4,0.5))
复制代码</p>
<pre><code>
![Python matplotlib 绘制等高线图](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230809/02fb59f753d94b379c8c9dc08252253c.png)

3. 显示轮廓标签

我们查看等高线图时,轮廓标签会辅助我们更好的查看图表。添加轮廓标签,我们需要借助clabe

* pyplot.contour()绘制等高线方法,会返回QuadContourset
* QuadContourset 包含level列表数据
* 使用pyplot.clabel()接受level列表数据标注在等高线上

</code></pre>
<p>x_value = np.arange(-3,3,0.025)
y_value = np.arange(-3,3,0.025)</p>
<p>x,y = np.meshgrid(x_value,y_value)</p>
<p>z = (1-x<strong>2+y</strong>5)<em>np.exp(-x</em><em>2-y</em>*2)</p>
<p>cs = plt.contour(x,y,z,cmap="Blues_r",linewidths=np.arange(0.5,4,0.5))</p>
<p>plt.clabel(cs,fontsize=9,inline=True)</p>
<pre><code>
![Python matplotlib 绘制等高线图](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230809/100a161e8ac443f1910015418f5c32ae.png)

4. 填充颜色

通常在等高线图中,不同区域填充不一样的颜色,帮助我们查看图表时更好地理解

* 使用pyplot.contourf()对比同区域轮廓进行填充颜色

</code></pre>
<p>z = (1-x<strong>2+y</strong>5)<em>np.exp(-x</em><em>2-y</em>*2)</p>
<p>cs = plt.contour(x,y,z,10,colors="b",linewidths=0.5)</p>
<p>plt.clabel(cs,fontsize=12,inline=True)</p>
<p>plt.contourf(x,y,z,10,cmap="Blues_r",alpha=0.75)</p>
<pre><code>
![Python matplotlib 绘制等高线图](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230809/f5cffe05cf7946229fa91e7332938aa5.png)

5. 添加颜色条说明

我们可以借助pyplot.colorbar()方法来添加颜色条说明

</code></pre>
<p>z = (x<strong>2+y</strong>5)<em>np.exp(-x</em><em>2-y</em><em>2)
z1 = np.exp(-(x-1)</em><em>2-(y-1)</em><em>2)
Z = (z-z1)</em>2</p>
<p>cs = plt.contour(x,y,Z,10,colors="black",linewidths=0.5)</p>
<p>plt.clabel(cs,fontsize=12,inline=True)</p>
<p>plt.contourf(x,y,Z,10,cmap="afmhot_r",alpha=0.5)</p>
<p>plt.colorbar(shrink=0.8)

Python matplotlib 绘制等高线图

总结

本期,对matplotlib.pyplot 绘制等高线方法contour和contourf相关属性的学习。在绘制等高线图时,我们需要对三角函数、指数函数、正余弦函数等知识有一点了解,才能绘制出想要的图表

学习本节过程中,高中的数学知识都还给老师,摸摸头,头发怎么又掉了😱

Original: https://blog.csdn.net/weixin_54556126/article/details/121439373
Author: 编程简单学
Title: Python matplotlib 绘制等高线图

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/765160/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球