使用 Python Matplotlib 绘制等值线图
Matplotlib 是 Python 中一个免费且开源的绘图库。它用于使用 Python 脚本创建二维图形和图表。要使用 Matplotlib 的功能,首先需要安装该库。
使用 pip 安装
在命令提示符中执行以下命令,可以轻松地从 PyPi 安装 Matplotlib 的最新稳定版本。
pip install Matplotlib
您可以通过conda安装Matplotlib,使用以下命令:
conda install -c conda-forge matplotlib
等值线图用于通过绘制称为等值线的恒定 z 切片,在二维曲面上可视化三维数据。
它借助等值线函数 (Z) 绘制,该函数是两个输入 X 和 Y(X 轴和 Y 轴坐标)的函数。
Z = fun(x,y)
Matplotlib 提供两个函数plt.contour和plt.contourf来绘制等值线图。
contour() 方法
matplotlib.pyplot.contour() 方法用于绘制等值线。它返回 QuadContourSet。以下是此函数的语法:
contour([X, Y,] Z, [levels], **kwargs)
参数
[X, Y]:可选参数,它表示 Z 中值的坐标。
Z:绘制等值线的高度值。
levels:用于确定等值线/区域的数量和位置。
示例
让我们来看一个示例,并使用 numpy 三角函数绘制等值线。
import numpy as np import matplotlib.pyplot as plt def f(x, y): return np.sin(x) ** 10 + np.cos(10 + y * x) * np.cos(x) xlist = np.linspace(-4.0, 4.0, 800) ylist = np.linspace(-4.0, 4.0, 800) # A mesh is created with the given co-ordinates by this numpy function X, Y = np.meshgrid(xlist, ylist) Z = f(X,Y) fig = plt.figure() ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) cp = ax.contour(X, Y, Z) fig.colorbar(cp) # Add a colorbar to a plot ax.set_title('Contour Plot') ax.set_xlabel('x (cm)') ax.set_ylabel('y (cm)') plt.show()
输出
f(x,y) 函数使用 numpy 三角函数定义。
示例
让我们再来看一个示例,并绘制等值线。
import numpy as np import matplotlib.pyplot as plt def f(x, y): return np.sqrt(X**2 + Y**2) xlist = np.linspace(-10, 10, 400) ylist = np.linspace(-10, 10, 400) # create a mesh X, Y = np.meshgrid(xlist, ylist) Z = f(X, Y) fig = plt.figure(figsize=(6,5)) ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) cp = ax.contour(X, Y, Z) ax.set_title('Contour Plot') ax.set_xlabel('x (cm)') ax.set_ylabel('y (cm)') plt.show()
输出
z 函数是 x 和 y 坐标值的平方根之和。使用 numpy.sqrt() 函数实现。
contourf() 函数
matplotlib.pyplot 提供了一个 contourf() 方法来绘制填充等值线。以下是此函数的语法:
contourf([X, Y,] Z, [levels], **kwargs)
其中,
[X, Y]:可选参数,它表示 Z 中值的坐标。
Z:绘制等值线的高度值。
levels:用于确定等值线/区域的数量和位置。
示例
让我们再来看一个示例,并使用 contourf() 方法绘制等值线图。
import numpy as np import matplotlib.pyplot as plt xlist = np.linspace(-8, 8, 800) ylist = np.linspace(-8, 8, 800) X, Y = np.meshgrid(xlist, ylist) Z = np.sqrt(X**2 + Y**2) fig = plt.figure(figsize=(6,5)) ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) cp = ax.contourf(X, Y, Z) fig.colorbar(cp) # Add a colorbar to a plot ax.set_title('Filled Contours Plot') #ax.set_xlabel('x (cm)') ax.set_ylabel('y (cm)') plt.show()
输出
使用 fig.colorbar() 方法,我们已向图表中添加了颜色。z 函数是 x 和 y 坐标值的平方根之和。
示例
在此示例中,我们将使用 matplotlib.plt.contourf() 方法绘制极坐标等值线图。
import numpy as np import matplotlib.pyplot as plt a = np.radians(np.linspace(0, 360, 20)) b = np.arange(0, 70, 10) Y, X = np.meshgrid(b, a) values = np.random.random((a.size, b.size)) fig, ax = plt.subplots(subplot_kw=dict(projection='polar')) ax.set_title('Filled Contours Plot') ax.contourf(X, Y, values) plt.show()
输出
在以上所有示例中,我们都使用了 numpy.meshgrid() 函数来生成 X 和 Y 坐标的数组。