我正在尝试使用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
对的函数吗?就像这里所示[https://dev59.com/pWox5IYBdhLWcg3wf0Xl#9170879]。目前,您可能为Z
创建了不同的数组大小。 - Mr. T