有一个函数,这个函数包含两个自变量,用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()