私はしばらくMatplotlibでプロットしてきましたが、3Dプロットなどのプロット手法や、1Dを超える次元の配列にデータが存在する必要があることに気付きました。たとえば、1D 配列 X、Y、Z がある場合、それらを 3D プロットにプロットすることはできません。ただし、同じ配列を 2D または任意の ND に再形成すると、それらを 3D でプロットできます。私の質問は、なぜこれが起こると思いますか? さらに重要なことは、(データに関して) 再形成された配列と 1D 配列に違いはありますか?
1 に答える
1
調べてみましょうax.contour
。ドキュメントに例があります:
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
print(X.shape, Y.shape, Z.shape)
# ((120, 120), (120, 120), (120, 120))
cset = ax.contour(X, Y, Z)
ax.clabel(cset, fontsize=9, inline=1)
plt.show()
print ステートメントは、ax.contour
2D 入力を受け入れることができることを示しています。X
およびY
配列を 1D 配列に変更する場合:
X, Y, Z = axes3d.get_test_data(0.05)
X = X.reshape(-1)
Y = Y.reshape(-1)
print(X.shape, Y.shape, Z.shape)
次に、取得します
((14400,), (14400,), (120, 120))
形状として、 aTypeError
が発生します。
TypeError: Length of x must be number of columns in z,
and length of y must be number of rows.
したがって、選択の余地はないようです。ax.contour
2D 配列が必要です。
于 2012-11-08T22:05:05.140 に答える