Python 如何绘制正态分布的三维图

Python 如何绘制正态分布的三维图,python,matplotlib,data-visualization,Python,Matplotlib,Data Visualization,我试图在这个图中画出类似的东西,但没有成功 这可能是正态分布的3d图。有谁能帮我搞到这样的阴谋吗? 这是我正在尝试的代码 fig=plt.figure(figsize=(10,6)) ax=plt.axes(projection='3d') x=np.arange(0,251,0.85) y=np.arange(0,12,0.85) X,Y=np.meshgrid(x,y) for i in range(X.shape[0]): pos=np.empty(X.shape) R=

我试图在这个图中画出类似的东西,但没有成功

这可能是正态分布的3d图。有谁能帮我搞到这样的阴谋吗? 这是我正在尝试的代码

fig=plt.figure(figsize=(10,6))
ax=plt.axes(projection='3d')
x=np.arange(0,251,0.85)
y=np.arange(0,12,0.85)
X,Y=np.meshgrid(x,y)
for i in range(X.shape[0]):
    pos=np.empty(X.shape)
    R=(pos-0.85)/0.029
    Z=(1/0.29*np.sqrt(2*np.pi))*np.exp(-.5*R**2) #normal distribution
    ax.plot_surface(X,Y,Z) 

下面是一个创建一个看起来有点相似的情节的想法。从300个随机中心开始,以非常小的带宽计算a。该函数将高斯钟形放置在每个随机中心上,并对其求和

以下代码有点慢,因为曲面是在200x200个位置上计算和绘制的。为了缩小z轴,从中借用代码

导入matplotlib.pyplot作为plt
从scipy.stats导入高斯_kde
将numpy作为np导入
x=np.linspace(0251200)
y=np.linspace(0,12,200)
中心x=np.随机.均匀(x[0],x[-1],300)
中心y=np.随机.均匀(y[0],y[-1],300)
centers=np.vstack([centers\ux,centers\uy])
内核=gaussian_kde(中心,bw_方法=0.09)
十、 Y=np.meshgrid(X,Y)
位置=np.vstack([X.ravel(),Y.ravel()]))
Z=np.重塑(内核(位置).T,X.形状)
图=plt.图(图尺寸=(10,6))
ax=plt.轴(投影='3d')
surf=最大绘图曲面(X,Y,Z,cmap=“热”,线宽=0,计数=200,计数=200)
ax.get_proj=lambda:np.dot(Axes3D.get_proj(ax),np.diag([1,1,0.1,1]))
ax.set_zticks([])的值
plt.show()

为什么你认为它是正态分布,而标签上的表示是均匀分布?一个带宽极低的kde图呢?如果我理解正确,你只是想要一个情节,但甚至没有数据。数据是我已经给出了长方形和宽度的矩形。正如你可以看到的情节,我将得到平均和STD数据的偏差,我需要阴谋像上述数字。你可以假设任何百分比的网格被占用的绘图。你可以考虑正常。分布也。。因为我有正态分布和均匀分布。你可以假设绘图的平均值和标准偏差的任意值。嗯,图像看起来像是某个矩形内随机均匀分布的kde绘图。它看起来真的不像一个均匀分布。矩形的坐标只是一些条件,这些不是真正的“数据”,谢谢。我想看到z标签,但这些值非常接近,几乎无法读取。如何克服这个问题?一种方法是删除
set\u zticks([])
并添加
ax.zaxis.set\u major\u定位器(matplotlib.tickerMaxNLocator(2))
。另一种方法是删除缩放(
ax.get_proj=lambda:…
)并添加
ax.set_zlim(Z.max()*4)
(以保持外观平坦)。模块“matplotlib”没有属性“tickerMaxNLocator”Oops。漏掉一点<代码>matplotlib.ticker.MaxNLocator(2)