已知空间坐标和所对应的属性值,例如高程,温度等,绘制等值线图和三维图,网上的很多代码都是用规则的模拟数据,那么对于任意坐标的绘图代码如下。
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
if __name__ == '__main__':
data = np.loadtxt("surface.txt", dtype=float)
x, y, z = data[:, 0], data[:, 1], data[:, 2]
# 准备待插值位置
xi = np.linspace(x.min(), x.max(), 200)
yi = np.linspace(y.min(), y.max(), 200)
X, Y = np.meshgrid(xi, yi)
# 插值
Z = griddata((x, y), z, (X, Y), method='cubic')
# 绘图
fig = plt.figure()
ax1 = fig.add_subplot(121, projection='3d')
ax1.plot_surface(X, Y, Z, cmap='jet')
ax1.contour(X, Y, Z, cmap='jet')
ax2 = fig.add_subplo