使用Matplotlib绘制等高线图

使用Matplotlib绘制等高线图

Matplotlib 是一个免费且开源的绘图库,用于使用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()

输出

使用Matplotlib绘制等高线图

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

示例

让我们来看另一个示例并画出等高线。

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()

输出

使用Matplotlib绘制等高线图

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()

输出

使用Matplotlib绘制等高线图

使用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()

输出

使用Matplotlib绘制等高线图

在上面的所有示例中,我们使用了numpy.meshgrid()函数来产生X和Y坐标的数组。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程