matplotlib之等高线图

matplotlib之等高线图

文章目录

; 等高线图:

等高线也称”水平图”)指的是地形图上高程相等的相邻各点所连成的闭合曲线。把地面上海拔高度相同的点连成的闭合曲线,并垂直投影到一个水平面上,并按比例缩绘在图纸上,就得到等高线。
等高线也是一种在二维平面上显示 3D 图像的方法。等高线有时也被称为 “Z 切片”,如果您想要查看因变量 Z 与自变量 X、Y 之间的函数图像变化(即 Z=f(X,Y)),那么采用等高线图最为直观

contour

  1. 函数定义:
matplotlib.pyplot.contour(*args, data=None, **kwargs)

通用格式: matplotlib.pyplot.contour([X, Y,] Z, [levels], **kwargs)

  1. 常用参数:

  2. X:

  3. Y: X, Y类似数组,可选参数。为参数Z中各值的x和y坐标
  4. Z:绘制轮廓的高度值;
  5. levels:确定轮廓线/区域的数量和位置;
  6. colors:等高线的颜色,颜色字符串或颜色序列
  7. cmap: 等高线的颜色,字符串或者 Colormap
  8. alpha: 设置透明色,浮点,默认值1,介于0(透明)和1(不透明)之间;
  9. origin:通过指定 Z[0,0] 的位置来确定 Z 的方向和确切位置,仅当未指定 X, Y 时才有意义
    None :Z[0,0] 位于左下角的 X=0, Y=0 处
    ‘lower’ :Z [0, 0] 位于左下角的 X = 0.5, Y = 0.5 处
    ‘upper’ :Z[0,0] 位于左上角的 X=N+0.5, Y=0.5 处
    ‘image’ :使用 rcParams[“image.origin”] = ‘upper’ 的值
  10. antialiased: 是否启用抗锯齿渲染,默认 True
  11. linewidths: 等高线的线宽,如果是数字,则所有等高线都将使用此线宽。如果是序列,则将按指定的顺序以升序打印线宽。默认为 rcParams[“lines.linewidth”] = 1.5
  12. linestyles:等高线的样式,如果线条颜色为单色,则负等高线默认为虚线

contour的详细定义:
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.contour.html#matplotlib.pyplot.contour

示例说明:

通过产生一组随机数进行示例说明

import numpy as np
import matplotlib.pyplot as plt
"""
np.linspace()在指定的大间隔内[-4.0,4.0],返回固定间隔100个数据
"""
x = np.linspace(-4.0, 4.0, 100)
y = np.linspace(-4.0, 4.0, 100)

"""
np.meshgrid()两个坐标轴上的点在平面上画格,产生一个以向量x为行,向量y为列的矩
"""
X, Y = np.meshgrid(x, y)

Z = np.sqrt(X**2 + Y**2)

fig,ax = plt.subplots(figsize=(6,6))

plt.contour(X,Y,Z)
plt.show()

运行结果:

matplotlib之等高线图
从图中可以很明显看出这个等高线是一个嵌套的同心圆,同一圆上的为相同Z值。

扩展应用

颜色填充

通过contourf函数进行色彩填充

matplotlib.pyplot.contourf(*args, data=None, **kwargs)

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.contourf.html

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']
"""
np.linspace()在指定的大间隔内[-4.0,4.0],返回固定间隔100个数据
"""
x = np.linspace(-4.0, 4.0, 100)
y = np.linspace(-4.0, 4.0, 100)

"""
np.meshgrid()两个坐标轴上的点在平面上画格,产生一个以向量x为行,向量y为列的矩
"""
X, Y = np.meshgrid(x, y)

Z = np.sqrt(X**2 + Y**2)

fig,axes=plt.subplots(1,2,figsize=(16,9))

axes[0].contour(X, Y,Z, alpha = 0.75, cmap = plt.cm.hot)
axes[0].set_title('等高线')
axes[1].contourf(X, Y, Z,cmap = plt.cm.hot)
axes[1].set_title('等高线图填充颜色')
fig.colorbar(cp)
plt.show()

运行结果:

matplotlib之等高线图

绘制等高线值

matplotlib.pyplot.clabel() 方法用于给等高线添加标记。

下面以双峰线f(x,y)=e^(-(x – 2) ^2 – (y – 2) ^2))+2 * e^(-x ^2 – y ^2),看看因变量 Z 与自变量 X、Y 之间的函数图像变化,下图为双峰的三维形状。

matplotlib之等高线图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib

"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']
"""
np.linspace()在指定的大间隔内[-2,4],返回固定间隔1000个数据
"""
x = np.linspace(-2, 4, 1000)
y = np.linspace(-2, 4, 1000)
"""
np.meshgrid()两个坐标轴上的点在平面上画格,产生一个以向量x为行,向量y为列的矩
"""
X, Y = np.meshgrid(x, y)

Z = np.exp(-(X - 2) ** 2 - (Y - 2) ** 2) + 1.2 * np.exp(-X ** 2 - Y ** 2)

fig,ax=plt.subplots(figsize=(6,6))
C = ax.contour(X, Y, Z, cmap=matplotlib.cm.jet)
plt.clabel(C)
plt.title('等高线图设置等高线值')
plt.show()

运行结果如下:

matplotlib之等高线图
从上图可以明显看出等高线是二维平面上显示 3D 图像,即从三维坐标系中延Z轴在X-Y平面的投影。

轮廓线颜色和样式

matplotlib.pyplot.contour() 方法中,

  • colors 参数即可为等高线轮廓设置颜色,可以是单色,也可以是一个颜色列表,
  • linestyles 参数可以设置轮廓线样式,注意,如果线条颜色为单色,则负等高线(高度值为负)默认为虚线。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib

"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']
"""
np.linspace()在指定的大间隔内[-2,4],返回固定间隔1000个数据
"""
x = np.linspace(-2, 4, 1000)
y = np.linspace(-2, 4, 1000)
"""
np.meshgrid()两个坐标轴上的点在平面上画格,产生一个以向量x为行,向量y为列的矩
"""
X, Y = np.meshgrid(x, y)

Z = np.exp(-(X - 2) ** 2 - (Y - 2) ** 2) + 1.2 * np.exp(-X ** 2 - Y ** 2)

fig,ax=plt.subplots(figsize=(6,6))
colors = ['k', 'r', 'g', 'b']

C = ax.contour(X, Y, Z,8, colors=colors, linestyles='--')

plt.clabel(C, inline=True, colors=colors, fmt='%1.2f')
plt.title('等高线图设置颜色/样式示例')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

运行结果如下:

matplotlib之等高线图

总结

等高线的通常的使用场景:

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

Original: https://blog.csdn.net/zhulove86/article/details/124832980
Author: 祝丰年
Title: matplotlib之等高线图

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

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

(0)

大家都在看

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