PHP前端开发

使用Python Matplotlib绘制等高线图

百变鹏仔 4小时前 #Python
文章标签 线图

matplotlib 是 python 中的免费开源绘图库。它用于通过使用 python 脚本创建二维图形和绘图。要使用 matplotlib 功能,我们需要首先安装该库。

使用 pip 安装

通过在命令提示符中执行以下命令,我们可以轻松地从 PyPi 安装 Matplotlib 的最新稳定包。

pip install Matplotlib

您可以使用以下命令通过conda安装Matplotlib -

conda install -c conda-forge matplotlib

等高线图用于通过绘制常量 z 切片(称为等高线)来可视化二维表面中的三维数据。

它是在轮廓函数 (Z) 的帮助下绘制的,该函数是两个输入 X 和 Y(X 轴和 Y 轴坐标)的函数。

立即学习“Python免费学习笔记(深入)”;

Z = fun(x,y)

Matplotlib 提供了两个函数 plt.contourplt.contourf 来绘制等高线图。

contour() 方法

matplotlib.pyplot。轮廓()方法用于绘制轮廓线。它返回 QuadContourSet。以下是该函数的语法 -

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

参数

  • [X,Y]:可选参数,表示Z中值的坐标。

  • Z:绘制轮廓的高度值。

  • levels:用于确定轮廓线/区域的数量和位置。

示例

让我们举个例子,使用 numpy 三角函数绘制等高线。

import numpy as npimport matplotlib.pyplot as pltdef 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 functionX, 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 plotax.set_title('Contour Plot')ax.set_xlabel('x (cm)')ax.set_ylabel('y (cm)')plt.show()

输出

f(x,y) 函数是使用 numpy 三角函数定义的。

示例

我们再举一个例子,画等高线。

import numpy as npimport matplotlib.pyplot as pltdef 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 npimport matplotlib.pyplot as pltxlist = 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 plotax.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 npimport matplotlib.pyplot as plta = 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 坐标的数组。