1

私はPythonに比較的慣れていません。ファイルにあるデータからさまざまな種類のプロットを行っています。等高線図を作成できたので、同じデータを 3D プロットにプロットしたいと思いました。そのため、データはすでに X、Y、Z 配列にあります。Nx X 値、Ny Y 値があり、Z は (Nx,Ny) 配列です。私が試しているコードの最新バージョンは次のとおりです。

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import matplotlib.cm as cm

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.RdBu)
plt.show()

そのため、以前は X、Y、および Z がファイルから収集され、先ほど説明した配列に格納されていました。しかし、これを実行しようとすると、次のようになります。

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.RdBu)
File "/....../axes3d.py", line 1358, in plot_surface
X.shape = (rows,cols)
ValueError: total size of new array must be unchanged

何らかの理由で X は 2 次元配列でなければならないのでしょうか? または、行などの代わりに X を列ベクトルに再形成する必要がありますか? 等高線では機能するが、3D プロットでは機能しない理由が本当にわかりません。コメントをお待ちしております。ありがとう。

4

1 に答える 1

2

はい、X と Y は 2 次元でなければなりません。

試す:

import numpy as np
X2D, Y2D = np.meshgrid(X,Y)
ax.plot_surface(X2D, Y2D, Z, rstride=1, cstride=1, cmap=cm.RdBu)

これがうまくいくことを願っています

于 2013-07-02T07:07:24.380 に答える