0

分散メッシュ上に3D FEM計算の結果があります。 私はそれらのデータをpythonで水平方向の平面上に補間し、その平面上の結果の輪郭線をmatplotlibを使ってプロットしたいと思います。 出力ファイルresults.datには、6つの列、つまりx、y、z座標と変位の3つの要素が含まれています。私は第3の要素に興味があります。 私は、(-50,10)から(50,110)まで広がり、z = -5に位置する100 x 100の長方形のグリッドで補間したいと思います。 私は、次の可能性を考えている:結果が正しい場合、私はscipyとmatplotlibを使って散乱した3Dデータの補間とプロット

plt.contour(xi,yi,griddata) 

のようなものをやって等高線をプロットすることができるはずチェックするために

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)) 

が、私が処理することはできませんよフォーマットでXI、YIとgriddataは、私は最終的に私が望む結果を得るために、私がしなければならない、ということを発見した試行錯誤によってplt.contour

答えて

0

で必要とされる:

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() 

誰もがこのように動作する理由を理解するのを助けることができたら本当に感謝します! 補間を行う他の方法はありますか?この3Dの唯一の選択肢であると思われる「線形」以外の高次の補間方法を使用することができればよいでしょう。

+0

私はここでxとyを混同していると思います。 – ImportanceOfBeingErnest

+0

なぜそれを言うのですか?私はそうは思わない – user2078621

+0

もちろん私はあなたのデータを知らない。しかし、 'gridres'を転置する必要があれば、xがyであり、yがxであることを示します。 – ImportanceOfBeingErnest

関連する問題