import matplotlib.pyplot as pltimport numpy as npplt.style.use('_mpl-gallery-nogrid')# make dataX, Y = np.meshgrid(np.linspace(-3, 3, 16), np.linspace(-3, 3, 16))Z = (1 - X/2 + X**5 + Y**3) * np.exp(-X**2 - Y**2)# plotfig, ax = plt.subplots()ax.imshow(Z, origin='lower')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, 16), np.linspace(-3, 3, 16))# np.linspace(-3, 3, 16) 在区间 [-3, 3] 上均匀生成 16 个点。# np.meshgrid 根据这两个一维数组生成二维网格坐标矩阵 X 和 Y,每个矩阵的大小都是 16×16。# X 的每一行都是相同的 x 坐标值,Y 的每一列都是相同的 y 坐标值,共同定义了平面上 16×16 个网格点的坐标。# 4、计算函数值Z = (1 - X/2 + X**5 + Y**3) * np.exp(-X**2 - Y**2)# 5、绘图fig, ax = plt.subplots() # 创建一个图形对象 fig 和一个坐标轴对象 axax.imshow(Z, origin='lower')# 将矩阵 Z 显示为图像。每个元素的值映射为颜色。# origin='lower' 指定数组的第一行(索引 0)放在图像的底部,这样图像的 y 轴方向与数学坐标系一致(向上增加)。# 如果不设置,默认 origin='upper',则第一行在顶部。# 6、显示图像plt.show()
- 使用imshow(Z)方法将数据显示为图像,即在二维规则栅格上。Z为二维数组,根据下式计算。
- 由于网格只有 16×16 个点,图像较粗糙,但能大致看出函数的形状:中心区域由于指数衰减而较暗,四周因多项式项影响有起伏。