我有如下代码和生成的图表。我的目标是在右边的第二个图上绘制一个1D高斯分布,如所示的红色平面。
这样做的目的是显示重叠部分(表示条件概率)是高斯分布。我不关心分布的精确方差是否正确,只是想将其直观地展示出来。
有没有在Python中实现这个简单的方法?
谢谢,P
这样做的目的是显示重叠部分(表示条件概率)是高斯分布。我不关心分布的精确方差是否正确,只是想将其直观地展示出来。
有没有在Python中实现这个简单的方法?
谢谢,P
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.mlab import bivariate_normal
from mpl_toolkits.mplot3d import Axes3D
#Make a 3D plot
fig = plt.figure(figsize=plt.figaspect(0.5))
################ First Plot ##############
#Parameters to set
mu_x = 0
sigma_x = np.sqrt(5)
mu_y = 0
sigma_y = np.sqrt(5)
#Create grid and multivariate normal
x = np.linspace(-10,10,500)
y = np.linspace(-10,10,500)
X, Y = np.meshgrid(x,y)
Z = bivariate_normal(X,Y,sigma_x,sigma_y,mu_x,mu_y)
# Create plane
x_p = 2
y_p = np.linspace(-10,10,500)
z_p = np.linspace(0,0.02,500)
Y_p, Z_p = np.meshgrid(y_p, z_p)
# ax = fig.gca(projection='3d')
ax = fig.add_subplot(1,2,1, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis',linewidth=0)
ax.plot_surface(x_p, Y_p, Z_p, color='r',linewidth=0, alpha=0.5)
plt.tight_layout()
################ Second Plot ##############
x_p = 2
y_p = np.linspace(-10,10,500)
z_p = np.linspace(0,0.02,500)
Y_p, Z_p = np.meshgrid(y_p, z_p)
# ax2 = fig.gca(projection='3d')
ax2 = fig.add_subplot(1,2,2,projection='3d')
ax2.plot_surface(x_p, Y_p, Z_p, color='r',linewidth=0, alpha=0.3)
plt.show()
ax.plot_surface(X, Y, Z, cmap='viridis',linewidth=0, zorder=0) ax.plot_surface(x_p, Y_p, Z_p, color='r',linewidth=0, alpha=0.5, zorder=5) ax.plot(x_c,y_c,z_c, zorder=10) plt.tight_layout()
- prax1telis