matplotlib Axes3D错误

时间:2017-11-13 09:09:01

标签: python matplotlib

我试图根据一天中的小时数和一年中的天数绘制风力涡轮机产生的功率。

我制作了这个小程序:

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:形状不匹配:无法将对象广播到单个对象   形状

1 个答案:

答案 0 :(得分:1)

plot_surface(X, Y, Z, *args, **kwargs) documentation

  

X,Y,Z数据值为2D数组

在您的情况下,dy是1D。创建2D数组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()