有一个函数,这个函数包含两个自变量,用Python作图,改变两个自变量的取值,画出其函数的图形,用等高线图表示,每条等高线上标注数值。并且以此为数据范围画一幅伪彩图,两张图放在一起展示。

首先,需要导入需要的库,如下所示:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm

然后,定义一个函数,该函数具有两个自变量,可以自己定义,例如:

def my_function(x, y):
    return np.sin(np.sqrt(x**2 + y**2))

接下来,我们需要定义两个自变量的取值范围和步长:

# 定义自变量取值范围和步长
x_values = np.arange(-10, 10, 0.1)
y_values = np.arange(-10, 10, 0.1)

然后,使用 NumPy 库中的 meshgrid() 函数将两个自变量的取值范围转换成网格点坐标:

# 将自变量的取值范围转换成网格点坐标
X, Y = np.meshgrid(x_values, y_values)

现在可以计算每个网格点的函数值:

# 计算每个网格点的函数值
Z = my_function(X, Y)

接下来,我们可以用 Matplotlib 库中的 contour() 函数绘制等高线图:

# 绘制等高线图
plt.contour(X, Y, Z, cmap=cm.coolwarm)
plt.colorbar()
plt.show()

可以使用 Matplotlib 库中的 pcolor() 函数创建一个伪彩色图:

# 绘制伪彩色图
plt.pcolor(X, Y, Z, cmap=cm.coolwarm)
plt.colorbar()
plt.show()

最后,可以将两张图放在一起展示:

# 将等高线图和伪彩色图放在一起展示
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6))

# 绘制等高线图
cp = ax1.contour(X, Y, Z, cmap=cm.coolwarm)
ax1.set_title('Contour plot')
ax1.clabel(cp, inline=True, fontsize=8)
ax1.set_xlabel('X')
ax1.set_ylabel('Y')

# 绘制伪彩色图
pcm = ax2.pcolor(X, Y, Z, cmap=cm.coolwarm)
ax2.set_title('Pseudocolor plot')
fig.colorbar(pcm, ax=ax2)
ax2.set_xlabel('X')
ax2.set_ylabel('Y')

plt.show()