6

私は2つのnumpy配列を持っています。最初の配列は(30、365)で、年間を通じて30の深さの値が含まれ、2番目の配列は(30、1)で、の深さに対応する実際の深さ(メートル単位)が含まれています。最初の配列。最初の配列をプロットして、深さが2番目の配列に従ってスケーリングされるようにしたいが、データも補間したい(最初のいくつかの深さは比較的近く、低い深さは遠く離れているため、pcolor画像にブロック状の外観を提供します。)

これは私がしていることです:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 365, 1)
X, Y = np.meshgrid(x, depth)    #depth is the (30, 1) array

plt.pcolor(X, -Y, data)         #data is the (30, 365) array

ブロック状の外観になりますが、より滑らかなグラフを作成する方法についてのアイデアはありますか?

4

2 に答える 2

4

深さは規則的なグリッド (つまり、一定の間隔) にありますか? その場合は、キーワード andを使用imshowして範囲を設定できます。それ以外の場合は、2 つの選択肢があります。extentaspect='auto'

pcolormesh代わりに を使用して使用できますshading='gouraud'。これは、シャープな色の量子化に役立ちますが、補間ほどではありません。

2 番目の選択肢は、データを新しい通常の深度グリッドに補間することです。これimshowにより、さまざまな補間オプションを使用できます。たとえば、深さ方向に沿ってのみ補間するには、scipy を使用できますinterpolate.interp1d

from scipy.interpolate import interp1d

fint = interp1d(depth, data.T, kind='cubic')
newdata = fint(newdepth).T

補間は最後の.Tインデックスにある必要があり、深さはデータの最初のインデックスであるため、追加されました。kind必要に応じて交換でき'linear'ます。

于 2012-08-22T22:55:51.547 に答える
3

いいえ、pcolor補間はしません。NonUniformImageまたは代わりに試すこともできますimshowここで例をチェックしてください

于 2012-08-22T22:01:35.953 に答える