こんにちは私は、.datファイルからプロットすることで、3DサーフェスプロットをPythonで実行しようとしています。私はかなりの問題を抱えています。私は最終的にエラーメッセージを生成しないコードを持っていますが、.datファイルが空ではないにもかかわらずプロットには何も表示されません。私のコードは以下の通りです。.datファイルの3Dサーフェスプロット
3Dサーフェスプロットを使用して.datファイルからデータをプロットするにはどうすればよいですか?私のデータは3つの列として.datファイルに書式設定されています。助けてくれてありがとう!
更新:.datファイルが空ではなく、3D散布図で同じ.datファイルをプロットすることはできますが、この3Dサーフェスプロットコードでは機能しません。 .datファイルには、次のようなもの(数字のわずか3列)になります。
1 2 6
3 8 7
4 9 3
5 2 5
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
from matplotlib.mlab import griddata
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
data = np.genfromtxt('file.dat')
x = data[:,0]
y = data[:,1]
z = data[:,2]
xi = np.linspace(min(x), max(x),0.1)
yi = np.linspace(min(y), max(y),0.1)
X, Y = np.meshgrid(xi, yi)
Z = griddata(x, y, z, xi, yi, interp='linear')
ax.set_xlabel('$x$', fontsize = 14)
ax.set_ylabel('$y$', fontsize = 14)
ax.set_zlabel('$z$', fontsize = 14)
ax.set_title('result..', fontsize = 14)
surf = ax.plot_surface(X, Y, Z, linewidth=1, antialiased=True)
ax.set_zlim3d(0,1)
plt.show()
データを投稿した場合、または少なくとも最初の10行ほどの回答を得ることができます。データを共有できない場合は、いくつかの人工データ(たとえばnp.randomを使用)で問題を再現することが最善です。 – lanery
'np.genfromtxt(...)'行の後に 'print data.shape'を実行することで' data'が実際に空でないことを確認できますか? –
@MarijnvanVlietありがとう、私は今、それを試してみました。それは(6561,3)を印刷します。注:3D散布図を使ってこの.datファイルをプロットできますが、2番目は3Dサーフェスプロットコードで同じ.datファイルを実行しようとしています。プロットには何も表示されません。助言がありますか?再度、感謝します! –