【发布时间】:2018-07-06 01:09:51
【问题描述】:
我正在尝试使用 matplotlib 可视化多元正态分布。我想制作这样的东西:
我使用以下代码:
from mpl_toolkits import mplot3d
x = np.linspace(-1, 3, 100)
y = np.linspace(0, 4, 100)
X, Y = np.meshgrid(x, y)
Z = np.random.multivariate_normal(mean = [1, 2], cov = np.array([[0.5, 0.25],[0.25, 0.50]]), size = 100000)
ax = plt.axes(projection='3d')
ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
cmap='viridis', edgecolor='none')
ax.set_title('surface');
但我收到以下错误消息:
...
7 ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
----> 8 cmap='viridis', edgecolor='none')
...
ValueError: shape mismatch: objects cannot be broadcast to a single shape
错误的原因是什么以及如何更正我的代码?
【问题讨论】:
-
不应该
Z是x, y对的函数吗?如图所示here。 Atm 您可能为 Z 创建了不同的数组大小。
标签: python numpy matplotlib 3d