python中matplotlib的使用(三)

一些其他的图形

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/pythonmatplotlib_example.py文件

发布了9 篇原创文章 · 获赞 2 · 访问量 98

猜你喜欢

转载自blog.csdn.net/jocker_775065019/article/details/104885425
今日推荐