📜  Python中的曲面图和等高线图

📅  最后修改于: 2022-05-13 01:55:49.847000             🧑  作者: Mango

Python中的曲面图和等高线图

Matplotlib的引入牢记,只有二维绘图。但是在 1.0 版本发布的时候,3d 实用程序是在 2d 上开发的,因此,我们今天可以使用 3d 数据实现!通过导入 mplot3d 工具包启用 3d 绘图。在本文中,我们将详细讨论曲面图和等高线图。

曲面图

曲面图是三维数据集的表示。它描述了两个自变量 X 和 Z 以及指定的因变量 Y 之间的函数关系,而不是显示单个数据点。它是等高线图的伴生图。它类似于线框图,但线框的每个面都是一个填充的多边形。这有助于创建正在可视化的表面的拓扑。

曲面图用于:

  • 可视化机器学习和深度学习中的损失函数
  • 在强化学习中可视化存储或状态值函数

创建 3D 曲面图

Matplotlib 的 mpl_toolkits.mplot3d 工具包中的 axes3d 提供了用于创建 3D 曲面图的必要函数。曲面图是使用ax.plot_surface()函数创建的。

句法:

ax.plot_surface(X, Y, Z)

其中 X 和 Y 是 x 和 y 点的二维数组,而 Z 是高度的二维数组。

示例 1:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
  
a = np.array([1, 2, 3])
b = np.array([4, 5, 6, 7])
  
a, b = np.meshgrid(a, b)
  
# surface plot for a + b
fig = plt.figure()
axes = fig.gca(projection ='3d')
axes.plot_surface(a, b, a + b)
  
plt.show()

输出:

示例 2:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
  
a = np.array([1, 2, 3])
b = np.array([4, 5, 6, 7])
  
a, b = np.meshgrid(a, b)
  
# surface plot for a**2 + b**2
a = np.arange(-1, 1, 0.02)
b = a
a, b = np.meshgrid(a, b)
  
fig = plt.figure()
axes = fig.gca(projection ='3d')
axes.plot_surface(a, b, a**2 + b**2)
  
plt.show()

计数地块

等高线图也称为水平图,是一种用于在 2-D 空间中进行多变量分析和可视化 3-D 图的工具。如果我们将 X 和 Y 作为我们想要绘制的变量,那么响应 Z 将被绘制为 XY 平面上的切片,因为这些轮廓有时被称为 Z 切片或等响应。

等高线图广泛用于可视化山的密度、海拔或高度以及气象部门。由于使用如此广泛, matplotlib.pyplot提供了一种方法 contour 使我们可以轻松绘制等高线图。

创建等高线图

matplotlib.pyplot.contour() 通常在 Z = f(X, Y) 时很有用,即 Z 作为输入 X 和 Y 的函数而变化。contourf() 也可用,它允许我们绘制填充轮廓。

句法:

matplotlib.pyplot.contour([X, Y, ] Z, [levels], **kwargs)

在哪里,

  • X, Y:与 Z 形状相同的二维 NumPy 数组或一维数组,使得len(X)==Mlen(Y)==N (其中 M 和 N 是 Z 的行和列)
    Z:绘制轮廓的高度值。形状为 (M, N)
    级别:确定等高线/区域的数量和位置。

示例 1:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
  
a = np.array([1, 2, 3])
b = np.array([4, 5, 6, 7])
  
a, b = np.meshgrid(a, b)
  
# surface plot for a + b
fig = plt.figure()
axes = fig.gca(projection ='3d')
axes.contour(a, b, a + b)
  
plt.show()

输出:

等高线图-python

示例 2:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
  
a = np.array([1, 2, 3])
b = np.array([4, 5, 6, 7])
  
a, b = np.meshgrid(a, b)
  
# surface plot for a**2 + b**2
a = np.arange(-1, 1, 0.02)
b = a
a, b = np.meshgrid(a, b)
  
fig = plt.figure()
axes = fig.gca(projection ='3d')
axes.contour(a, b, a**2 + b**2)
  
plt.show()

输出: