meshgrid()+plt.contourf()用法

这次在matplotlib画图时遇到了这两个函数,感觉有必要看看怎么用,就自己尝试找找文档稍微记一下关键使用

np.meshgrid()

numpy.meshgrid(*xi, copy=True, sparse=False, indexing=‘xy’)

该函数将坐标向量(coordinate vector)转化为坐标矩阵(coordinate matrices)

  • *xi:这是一个参数序列,x1,x2,…,xn,每一个x都是一个坐标向量
  • returns:X1,X2,X3,…,Xn:ndarray
    直接看解释真的不是很理解,直接看用法吧!

使用案例

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-10,10,100)
y=np.linspace(-25,10,100)
X,Y=np.meshgrid(x,y)

X=array([[-10.       ,  -9.7979798,  -9.5959596, ...,   9.5959596,
          9.7979798,  10.       ],
       [-10.       ,  -9.7979798,  -9.5959596, ...,   9.5959596,
          9.7979798,  10.       ],
       [-10.       ,  -9.7979798,  -9.5959596, ...,   9.5959596,
          9.7979798,  10.       ],
       ...,
       [-10.       ,  -9.7979798,  -9.5959596, ...,   9.5959596,
          9.7979798,  10.       ],
       [-10.       ,  -9.7979798,  -9.5959596, ...,   9.5959596,
          9.7979798,  10.       ],
       [-10.       ,  -9.7979798,  -9.5959596, ...,   9.5959596,
          9.7979798,  10.       ]])
Y=array([[-25.        , -25.        , -25.        , ..., -25.        ,
        -25.        , -25.        ],
       [-24.64646465, -24.64646465, -24.64646465, ..., -24.64646465,
        -24.64646465, -24.64646465],
       [-24.29292929, -24.29292929, -24.29292929, ..., -24.29292929,
        -24.29292929, -24.29292929],
       ...,
       [  9.29292929,   9.29292929,   9.29292929, ...,   9.29292929,
          9.29292929,   9.29292929],
       [  9.64646465,   9.64646465,   9.64646465, ...,   9.64646465,
          9.64646465,   9.64646465],
       [ 10.        ,  10.        ,  10.        , ...,  10.        ,
         10.        ,  10.        ]])
X,Y=np.meshgrid(x,y,sparse=True)
X=array([[-10.        ,  -9.7979798 ,  -9.5959596 ,  -9.39393939,
         -9.19191919,  -8.98989899,  -8.78787879,  -8.58585859,
         -8.38383838,  -8.18181818,  -7.97979798,  -7.77777778,
         -7.57575758,  -7.37373737,  -7.17171717,  -6.96969697,
         -6.76767677,  -6.56565657,  -6.36363636,  -6.16161616,
         -5.95959596,  -5.75757576,  -5.55555556,  -5.35353535,
         -5.15151515,  -4.94949495,  -4.74747475,  -4.54545455,
         -4.34343434,  -4.14141414,  -3.93939394,  -3.73737374,
         -3.53535354,  -3.33333333,  -3.13131313,  -2.92929293,
         -2.72727273,  -2.52525253,  -2.32323232,  -2.12121212,
         -1.91919192,  -1.71717172,  -1.51515152,  -1.31313131,
         -1.11111111,  -0.90909091,  -0.70707071,  -0.50505051,
         -0.3030303 ,  -0.1010101 ,   0.1010101 ,   0.3030303 ,
          0.50505051,   0.70707071,   0.90909091,   1.11111111,
          1.31313131,   1.51515152,   1.71717172,   1.91919192,
          2.12121212,   2.32323232,   2.52525253,   2.72727273,
          2.92929293,   3.13131313,   3.33333333,   3.53535354,
          3.73737374,   3.93939394,   4.14141414,   4.34343434,
          4.54545455,   4.74747475,   4.94949495,   5.15151515,
          5.35353535,   5.55555556,   5.75757576,   5.95959596,
          6.16161616,   6.36363636,   6.56565657,   6.76767677,
          6.96969697,   7.17171717,   7.37373737,   7.57575758,
          7.77777778,   7.97979798,   8.18181818,   8.38383838,
          8.58585859,   8.78787879,   8.98989899,   9.19191919,
          9.39393939,   9.5959596 ,   9.7979798 ,  10.        ]])
总结
  1. 参数是给定的坐标向量(array like),这是唯一的必须参数;
  2. 对应的坐标矩阵是对应向量的集合。如果是二维,X每一行都是一个coordinate vector,总行数与y的dimension相等,Y的每一列都是一个向量,每一行都是相等的数,总列数等于x的dimension。(完全想象生成的X,Y最终可以组合成一个网格,不必纠结于具体的内容)

plt.contourf()

contourf([X, Y,] Z, [levels], **kwargs)

contour 和 contourf 分别绘制轮廓线和填充轮廓。除注明外,两个版本的函数签名和返回值相同.

  • X,Y:可选参数,利用meshgrid()生成,形状与Z相同;X,Y都必须是单调排序;如果未给出该参数,则假定为整数索引,X=range(N),Y=range(M)
  • Z:(M,N),array-like的矩阵,对应坐标点的高度值,颜色映射由cmap、norm、vmin和vmax决定
  • cmap:str或色彩映射表,默认为“viridis";如果设置了‘color’参数,自动忽略该参数。

用例

Z=X/8+Y*0.2
plt.contourf(X,Y,Z)
plt.show()

在这里插入图片描述

第一次遇见相关问题,暂时记录这些,之后相关继续补上。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值