import matplotlib.pyplot as pltimport numpy as npplt.style.use('_mpl-gallery-nogrid')# make dataX, Y = np.meshgrid(np.linspace(-3, 3, 256), np.linspace(-3, 3, 256))Z = (1 - X/2 + X**5 + Y**3) * np.exp(-X**2 - Y**2)levels = np.linspace(np.min(Z), np.max(Z), 7)# plotfig, ax = plt.subplots()ax.contour(X, Y, Z, levels=levels)plt.show()
# 1、导入库import matplotlib.pyplot as pltimport numpy as np# 2、设置内置样式plt.style.use('_mpl-gallery-nogrid')# 3、生成数据X, Y = np.meshgrid(np.linspace(-3, 3, 256), np.linspace(-3, 3, 256))# np.linspace(-3, 3, 256) 生成从 -3 到 3 的 256 个等间距点。# np.meshgrid 根据这两个一维数组生成二维网格坐标矩阵 X 和 Y,形状均为 (256, 256)。# X 的每一行都是相同的 x 坐标,Y 的每一列都是相同的 y 坐标,这样组合起来就覆盖了平面上的所有网格点。Z = (1 - X/2 + X**5 + Y**3) * np.exp(-X**2 - Y**2)# 计算每个网格点上的函数值 Zlevels = np.linspace(np.min(Z), np.max(Z), 7)# np.min(Z) 和 np.max(Z) 分别计算 Z 的最小值和最大值。# np.linspace(min, max, 7) 在这两个值之间均匀地取 7 个值,作为等高线的层级(levels)。这样等高线会画出 7 条不同高度的等值线。# 4、绘制图形fig, ax = plt.subplots() # 创建一个图形对象 fig 和一个坐标轴对象 axax.contour(X, Y, Z, levels=levels)# ax.contour 绘制等高线图。它根据网格坐标 X、Y 和对应的函数值 Z,在指定的 levels 高度上绘制等高线。# 每条线代表函数值等于该 level 的点。# 5、显示绘制的图形plt.show()
采用contour(X, Y, Z)方法绘制二维函数的等高线图