这次在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. ]])
总结
- 参数是给定的坐标向量(array like),这是唯一的必须参数;
- 对应的坐标矩阵是对应向量的集合。如果是二维,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()
第一次遇见相关问题,暂时记录这些,之后相关继续补上。