在matplotlib中3D图的背面绘制直方图

时间:2019-04-29 22:02:11

标签: python numpy matplotlib

我使用matplotlib,尝试使用Matlab代码和Wikipedia中的图作为指导,在3D图的侧壁上同时显示2组数据的直方图:https://commons.wikimedia.org/wiki/File:MultivariateNormal.png 我能够在基础平面上绘制原始数据,并使用'zdir'kwarg在侧壁上创建并绘制高斯拟合。

此示例能够利用'zdir'kwarg强制绘制曲线, Matplotlib 2d Plot on Faces of 3d Plot 但是matplotlib文档确认了我的AttributeErrors:未知属性zdir; hist和hist2d不支持该参数。

此示例似乎是在图中手动绘制条形图 plotting 3d histogram/barplot in python matplotlib作为解决问题的方法。

我已经尝试过在.hist和.hist2d中使用和不使用zdir =''。

# data is a 2D np.array defined elsewhere

# define plot limits
X = np.linspace(0, np.amax(data), 100)
Y = np.linspace(0, np.amax(data), 100)

# initialize data into x and y sets
x_data = data[:, 0]
y_data = data[:, 1]

# fit a gaussian to both sets
x_mean, x_std = norm.fit(x_data)
x_gauss = norm.pdf(X, x_mean, x_std)
y_mean, y_std = norm.fit(y_data)
y_gauss = norm.pdf(Y, y_mean, y_std)

# initialize plot
figure = plt.figure()
ax = figure.add_subplot(111, projection='3d')

# label axes
ax.set_xlabel('Delta X (um)')
ax.set_ylabel('Delta Y (um)')
ax.set_zlabel('P (X,Y)')

# plot data on base plane
ax.scatter3D(x_data, y_data, zdir='z', zs=0.0, c='k', marker='.')

# plot histograms on walls
ax.hist((x_data, x_gauss), bins=30) #these 2 lines
ax.hist((y_data, y_gauss), bins=30) #are where I'm looking for help

# plot gaussians on walls
ax.plot3D(X, x_gauss, zdir='y', zs=np.amax(data), c='b')
ax.plot3D(Y, y_gauss, zdir='x', zs=np.amax(data), c='g')

# show plot
plt.show()

在matplotlib中是否与在3D图的特定平面上绘制直方图的Matlab方法直接匹配?谢谢您的帮助!我对绘图非常陌生,并欢迎您看到其他任何惯用或已贬值的更改。我总是喜欢看看其他编码人员的想法。

0 个答案:

没有答案