Matplotlib tricontour():绘制非结构化网格等高线(附带实例)
在 matplotlib 中,提供了 ax3d.tricontour() 函数绘制非结构化网格等高线。函数的格式为:
另外,levels、cmap 等参数与二维绘图函数相同;offset=0 参数把等值线投影到指定坐标。
【实例】绘制非结构化网格等高线。

图 1 非结构化三角等高线
- ax3d.tricontour(x, y, z):x,y,z为一维数组,根据 x,y,z 形成非结构化网格,绘制等高线。
- ax3d.tricontour(x,y,z,zdir='x',levels=10):绘制 x 方向等高线。
另外,levels、cmap 等参数与二维绘图函数相同;offset=0 参数把等值线投影到指定坐标。
【实例】绘制非结构化网格等高线。
import matplotlib.pyplot as plt import matplotlib.tri as tri import numpy as np plt.rcParams['axes.unicode_minus'] = False # 显示负号 plt.rcParams['font.sans-serif'] = ['u'SimHei'] n_angles = 26 n_radii = 10 min_radius = 0.35 radii = np.linspace(min_radius, 0.95, n_radii) angles = np.linspace(0, 3 * np.pi, n_angles, endpoint=False) angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1) angles[:, 1::2] += np.pi / n_angles x = (10 * radii * np.cos(angles)).flatten() y = (10 * radii * np.sin(angles)).flatten() z = (np.cos(16 * radii) * np.cos(3 * angles) + np.sin(8 * radii)).flatten() triang = tri.Triangulation(x, y) triang.set_mask(np.hypot(x[triang.triangles].mean(axis=1), y[triang.triangles].mean(axis=1)) < min_radius) fig1, ax1 = plt.subplots() ax1.set_aspect('equal') tcf = ax1.tricontourf(triang, z) fig1.colorbar(tcf) ax1.tricontour(triang, z, colors='k') fig1.suptitle('matplotlib.pyplot.tricontour()实例') plt.show()运行程序,效果如下图所示:

图 1 非结构化三角等高线