2017-06-20 13 views
0

matplotlib 1.5.1の3Dプロットを2Dプロット(サブプロット)の既存セットに追加したいと思います。 2Dプロットはうまくいっていなくても機能しますが、3Dを追加すると、 'module'オブジェクトには 'plot_surface'という属性はありません。コードを単純にしておきたいので、新しい図形を作成せずにすべてのコマンドをpltに適用します(set_xlabelでラベルを追加する方法もあります)ので、あいまいなものになります。最初の3つのプロットは単純な2Dプロットで、最後は3Dです。2Dサブセットを2Dセットに追加

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

y1 = u.nodes.concentration 
x1 = u.nodes.x 

plt.figure(figsize=(20, 10)) 
plt.subplot(221) 
plt.title('Profile') 
plt.xlabel('Range') 
plt.ylabel('Concentration') 
plt.plot(x1, y1, '-b') 

# Inhibitor plt 
y2 = z.nodes.concentration 
x2 = z.nodes.x 

plt.subplot(222) 
plt.title('Profile') 
plt.xlabel('Range') 
plt.ylabel('Concentration') 
plt.plot(x2, y2, '-r') 

# Modulator plt 
y3 = v.nodes.concentration 
x3 = v.nodes.x 

plt.subplot(223) 
plt.title('Profile') 
plt.xlabel('Range') 
plt.ylabel('Concentration') 
plt.plot(x3, y3, '-g') 

#3D plot 
plt.subplot(224, projection='3d') 

# Grab data. 
xx = u_fft_x_norm 
yy = [i*time_period for i in xrange(1, times)] 
zz = u_timespace 

XX, YY = np.meshgrid(xx, yy) 
ZZ = zz 

# Plot a basic wireframe. 
plt.plot_surface(XX, YY, ZZ, rstride=20, cstride=20) 
plt.xlabel('Space') 
plt.ylabel('Time') 
plt.zlabel('Value') 
plt.title('Profile') 

答えて

0

エラーはわかりません。 pyplotには、plot_surfaceコマンドがありません。それが必要であるという指示もありません。見つけたすべての例を見ると、plot_surfaceはaxesの属性です。

ax = plt.subplot(224, projection='3d') 
ax.plot_surface(X, Y, Z, cmap=cm.coolwarm, linewidth=0, antialiased=False) 
+0

ありがとうございます!それを行うことができた – Ren

関連する問題