一些其他的图形
1)、灰度图
def f(x_, y_):
return (1 - x_ / 2 + x_ ** 5 + y_ ** 3) * np.exp(-x_ ** 2 - y_ ** 2)
n = 5
x = np.linspace(-2, 3, 3 * n)
y = np.linspace(-2, 3, 2 * n)
X, Y = np.meshgrid(x, y)
plt.imshow(f(X, Y))
plt.show()
其中meshgrid()
是生成网格的。
效果如下:
2)、3D图(plot_surface)
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X ** 2 + Y ** 2)
Z = np.cos(R)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='hot')
plt.show()
rstride
是在x向的条纹间隔,1个x向的间隔0.25,默认值为1。cstride
是在y向的条纹间隔,1个y向的间隔0.25,默认值为1。
效果如下:
3)、量场图(quiver)
n = 10
X, Y = np.mgrid[0:n, 0:n]
plt.quiver(X, Y,color = 'R')
plt.show()
np.mgrid()
生成2D,3D的矩阵:行数由np.mgrid第一个参数决定,列数由np.mgrid第一个参数决定,利用广播机制填充。
效果如下:
4)、等高线(contourf、contour)
def f(x_, y_):
return (1 - x_ / 2 + x_ ** 5 + y_ ** 3) * np.exp(-x_ ** 2 - y_ ** 2)
n = 256
x = np.linspace(-1, 3, n)
y = np.linspace(-1, 3, n)
X, Y = np.meshgrid(x, y)
plt.contourf(X, Y, f(X, Y), 4, alpha=.75, cmap='jet')
plt.contour(X, Y, f(X, Y), 4, colors='black', linewidth=.5)
plt.show()
coutour([X, Y,] Z,[levels], **kwargs)
contourf
绘制填充轮廓:
参数 | 介绍 |
---|---|
X,Y | 类似数组,可选 |
Z | 类似矩阵,绘制轮廓的高度值 |
levels | int或类似数组,可选,确定轮廓线/区域的数量和位置 |
aalpha | float ,可选,alpha混合值,介于0(透明)和1(不透明)之间 |
cmap | str或colormap ,可选 |
Colormap | 用于将数据值(浮点数)从间隔转换为相应Colormap表示的RGBA颜色,用于将数据缩放到间隔中看 |
PS:
当 X,Y,Z 都是 2 维数组时,它们的形状必须相同。如果都是 1 维数组时,len(X)是 Z 的列数,而 len(Y) 是 Z 中的行数。
contour
绘制轮廓线,参数同上。
效果如下:
代码参考:
https://github.com/ZhangJiangtao-0108/python中matplotlib_example.py
文件