16

matplotlib でいくつかの HDF データをプロットしようとしています。h5py を使用してインポートした後、データは次のように配列の形式で格納されます。

array([[151, 176, 178],
       [121, 137, 130],
       [120, 125, 126])

この場合、x 値と y 値は配列のフィールドの単なるインデックスであり、z 値は特定のフィールドの値です。(x,y,z) 形式では、次のようになります。

(1,1,151)
(2,1,176)
(3,1,178)
(1,2,121)
...

等々。

この種のデータから表面プロットを行う簡単な方法はありますか? 配列全体を反復することで、これを (x,y,z) タプルに変更できることはわかっていますが、必要ないのではないでしょうか?

4

1 に答える 1

43

3 次元の表面プロットが必要な場合は、meshgrid最初のプロットを作成する必要があります。あなたが試すことができます:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

X = np.arange(1, 10)
Y = np.arange(1, 10)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='hot', linewidth=0, antialiased=False)
ax.set_zlim(-1.01, 1.01)

fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()

生成するもの、 ここに画像の説明を入力

ただし、関連する情報が Z 値にのみある場合は、単純に を使用できますimshow。ここでは、Z 値は色で表されます。これは次の方法で実現できます。

im = plt.imshow(Z, cmap='hot')
plt.colorbar(im, orientation='horizontal')
plt.show()

どちらが与えるでしょう、

ここに画像の説明を入力

于 2012-08-02T11:28:08.947 に答える