我将数据放在一个大小为21 x 30 ndarray中;它包含每个点的速度值。我制作了一个3D表面图来可视化它,但数据不是很平滑。为了对数据进行插值,以便获得平滑的峰值,我尝试了函数griddata
,但似乎不起作用。
下面是我的代码:
import numpy as np
import matplotlib.pyplot as plt
vel = np.genfromtxt(r'velocity.txt')
x = np.arange(0, 21, 1)
y = np.arange(0, 30, 1)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X,Y = np.meshgrid(x, y)
surf = ax.plot_surface(x, y, vel, cmap="RdBu")
fig.set_size_inches(10, 10)
plt.show()
1条答案
按热度按时间f0brbegy1#
从问题中我可以理解,你需要做的是网格插值。使用scipy here的RegularGridInterpolator可以做到这一点。只需制作一个更精细的网格,在该网格上插值,然后绘图。