次の形式のファイルのmatplotlibを使用して等高線図を作成しようとしています。
x1 y1 z1
x2 y2 z2
等
numpy.loadtxtを使用してロードし、ベクトルを取得できます。これまでのところ、問題はありません。
私はこれを読んでプロットの方法を学び、コピーペーストで再現できるので、私のインストールに間違いはないと確信しています:
http://matplotlib.org/examples/pylab_examples/griddata_demo.html
xとyをベクトルとして入力し、zを配列として入力する必要があることを理解しています。これは、griddataで実行できます。これは私がこのサイトで見つけたものでもあります。
ドキュメントには次のように書かれています。
zi = griddata(x、y、z、xi、yi)は、z = f *(* x、y)の形式の表面を(通常)不均一な間隔のベクトル(x、y、z)のデータに適合させます。griddata()は、(xi、yi)で指定されたポイントでこのサーフェスを補間して、ziを生成します。xiとyiは、通常のグリッドを記述する必要があり、1Dまたは2Dのいずれかですが、単調に増加する必要があります。
例のために、私はこのコードを書きました:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as ml
x=np.linspace(1.,10.,20)
y=np.linspace(1.,10.,20)
z=np.linspace(1.,2.,20)
xi=np.linspace(1.,10.,10)
yi=np.linspace(1.,10.,10)
zi = ml.griddata(x,y,z,xi,yi)
ただし、griddataに関しては、次のエラーが発生します。IndexError:無効なインデックス
それで、私は次のようにドキュメントの例を少し変更しようとしました:
from matplotlib.mlab import griddata
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-2.1,2.1,300)
y = np.linspace(-2.1,2.1,300)
z = x*np.exp(-x**2-y**2)
# define grid.
xi = np.linspace(-2.1,2.1,100)
yi = np.linspace(-2.1,2.1,200)
# grid the data.
zi = griddata(x,y,z,xi,yi,interp='linear')
そして、私は同じエラーを受け取ります。何が悪いのかわかりません。
ご協力いただきありがとうございます。