亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 3D plot python 中繪制平面上的 1D 高斯分布

在 3D plot python 中繪制平面上的 1D 高斯分布

白板的微信 2022-05-11 14:45:24
我有以下代碼和它生成的圖。我的目標是在第二個圖(右)上繪制紅色平面上的一維高斯分布。這樣做的目的是表明重疊(表示條件)是高斯分布。我對正確的分布的確切方差不感興趣,而只是直觀地顯示這一點。在python中有沒有直接的方法來做到這一點?謝謝,Pimport numpy as npimport matplotlib.pyplot as pltfrom matplotlib.mlab import bivariate_normalfrom mpl_toolkits.mplot3d import Axes3D#Make a 3D plotfig = plt.figure(figsize=plt.figaspect(0.5))################ First Plot ###############Parameters to setmu_x = 0sigma_x = np.sqrt(5)mu_y = 0sigma_y = np.sqrt(5)#Create grid and multivariate normalx = 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 planex_p = 2y_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 = 2y_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()
查看完整描述

1 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

例如,您可以嘗試使用np.where獲取與計劃X公差范圍內的最近坐標,然后使用生成的索引作為掩碼來選擇對應的和值。這將導致您進入以下代碼:tolx_p = 2idx_x_pYZ



import numpy as np

import matplotlib.pyplot as plt

from matplotlib.mlab import bivariate_normal

from mpl_toolkits.mplot3d import Axes3D


#Parameters to set for Gaussian distribution

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)


# Finding closest idx values of X mesh to x_p

tol = 1e-4

idx_x_p = (np.where(x < x_p+tol) and np.where(x > x_p-tol))[0][0]

# Select the corresponding values of X, Y, Z (carefully switch X and Y)

x_c, y_c, z_c = Y[idx_x_p], X[idx_x_p], Z[idx_x_p]


# Plot

fig = plt.figure(figsize=plt.figaspect(0.5))

ax = fig.add_subplot(1, 1, 1, projection='3d')

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()


x_p它顯示了不同值的高斯形重疊。讓我們說x_p in np.linspace(-10,10,20):

http://img1.sycdn.imooc.com//627b5bc50001cfbf09600480.jpg

查看完整回答
反對 回復 2022-05-11
  • 1 回答
  • 0 關注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號