python中绘制等高线(关于np.meshgrid(), np.c_[]和plt.contourf(), plt.contour()函数的理解)

参考资料:

  1. numpy中的meshgrid函数
  2. np.c_和np.r_的用法解析
  3. Contours 等高线图
  4. 关于plt.cm.Spectral

1. np.meshgrid(x,y) 与 np.c_[ ]
xx, yy = np.meshgrid(x,y)的作用是在二维平面中将每一个x和每一个y分别对应起来,编织成栅格.

nx,ny = (3,3)
    #从0开始到1结束,返回一个numpy数组,nx代表数组中元素的个数
    x = np.linspace(0,2,nx)
    # [0. 1. 2.]
    y = np.linspace(0,2,ny)
    # [0. 1. 2.]
    xv,yv = np.meshgrid(x,y)
    print(xv.ravel())
    #[ 0.  1.  2.  0.  1.  2.  0.  1.  2.]
    print(yv.ravel())
    #[ 0.  0.  0.  1.  1.  1.  2.  2.  2.]
	f=np.c_[xv.ravel(), yv.ravel()]
    #f = array([[0., 0.],
       [1., 0.],
       [2., 0.],
       [0., 1.],
       [1., 1.],
       [2., 1.],
       [0., 2.],
       [1., 2.],
       [2., 2.]])

ravel函数是将矩阵变为一个一维的数组,其中xv.ravel()就表示x轴的坐标,yv.ravel()就表示了y轴的坐标,我们将x轴的坐标和y轴的坐标进行一一对应,就产生了一个2*2大小为1的网格中的9个点的坐标。注意np.c_[]用方括号[]来接收输入.

另外, 如果,将sparse参数设置为True,就不会向上面一样进行扩展了,也就是说它产生的网格坐标不是所有的网格坐标,而是网格对角线上的坐标点。

nx,ny = (3,3)
    #从0开始到1结束,返回一个numpy数组,nx代表数组中元素的个数
    x = np.linspace(0,2,nx)
    # [0. 1. 2.]
    y = np.linspace(0,2,ny)
    # [0. 1. 2.]
    xv,yv = np.meshgrid(x,y,sparse=True)
    print(xv)
    #[[ 0.  1.  2.]]
    print(yv)
    #[[ 0.]
     [ 1.]
     [ 2.]]

plt.contourf()和 plt.contour()
参考
3. Contours 等高线图
4. 关于plt.cm.Spectral

你可能感兴趣的:(python)