利用scipy和matplotlib插值绘制散乱三维数据等值线

2024-05-29 03:58:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个散乱网格的三维有限元计算结果。 我想用python在一个水平平面上插值这些数据,并使用matplotlib在该平面上绘制结果的等高线。 输出文件结果.dat包含6列,即x、y、z坐标和三个位移分量。我对第三部分感兴趣。 我想在一个100 x 100的矩形网格上插值,从(-50,10)到(50110),位于z=-5。 我想到了以下可能性:

import numpy as np
from scipy.interpolate import grid data

res = np.loadtxt('results.dat')
points = res[:,0:3]
values = res[:,-1]
xi,yi,zi = np.mgrid[-50.:50.:101j,10.:100.:101j,-5:-5:1j]

gridres = griddata(points, values, (xi, yi, zi))

为了检查结果是否正确,我应该能够画出等高线做些类似的事情

^{pr2}$ <>但我不能按照要求的格式处理席、彝、GrdDATAplt.轮廓在


Tags: import网格npres平面pointsdat插值
1条回答
网友
1楼 · 发布于 2024-05-29 03:58:44

经过反复试验,我终于发现,为了得到我想要的结果,我必须:

import matplotlib.pyplot as plt

x_contour = np.mgrid[-50.:50.:101j]
y_contour = np.mgrid[10.:100.:101j]

plt.contourf(x_contour, y_contour, gridres[:,:,0].T)
plt.show()

如果有人能帮助我理解为什么这样做,我将非常感激! 有没有其他建议的方法来做插值?如果我可以使用任何高阶插值方法而不是“线性”插值方法,这将是一个很好的选择,这似乎是三维情况下唯一的选择。在

相关问题 更多 >

    热门问题