2017-11-13 24 views
0

風力タービンによって生成された電力を、1日の時間数と1年の日数の関数でプロットしようとしています。matplotlib Axes3Dエラー

私はこの小さなプログラム作っ:

wPower1 = np.zeros((365, 24)) 
d = np.mat(np.arange(24)) 
print d 
y = np.mat(np.arange(365)) 
for heure in range(24): 
    for jour in range(365): 
     wPower1[jour][heure] = wPower[24 * (jour - 1) + heure] 

print wPower1 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
ax.plot_surface(d, y, wPower1, rstride=1, cstride=1, linewidth=0, antialiased=False) 
plt.show() 

をしかし、私はこのエラーを取得しています:

ValueError: shape mismatch: objects cannot be broadcast to a single shape

答えて

1

plot_surface(X, Y, Z, *args, **kwargs) documentationは、あなたのケースdy

X,Y,Z Data values as 2D arrays

を言うには1Dです。 2次元配列numpy.meshgridを作成すると便利です。

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

wPower = np.random.rand(365*24) 
wPower1 = wPower.reshape(365, 24) 

d,y = np.meshgrid(np.arange(24),np.arange(365)) 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
ax.plot_surface(d, y, wPower1, rstride=1, cstride=1, linewidth=0, antialiased=False) 
plt.show() 
+0

ありがとうございました:D –