我正在尝试绘制两个正态分布变量的公共分布。
下面的代码绘制了一个正态分布变量。绘制两个正态分布变量的代码是什么?
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.mlab as mlab
import math
mu = 0
variance = 1
sigma = math.sqrt(variance)
x = np.linspace(-3, 3, 100)
plt.plot(x,mlab.normpdf(x, mu, sigma))
plt.show()
听起来您正在寻找的是多元正态分布。这在scipy中实现为scipy.stats.multivariate_normal。重要的是要记住,您正在将协方差矩阵传递给函数。因此,为了简单起见,请将对角线元素设为零:
[X variance , 0 ]
[ 0 ,Y Variance]
这是使用此功能并生成结果分布的3D图的示例。我添加了颜色图,使查看曲线更容易,但可以随时将其删除。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import multivariate_normal
from mpl_toolkits.mplot3d import Axes3D
#Parameters to set
mu_x = 0
variance_x = 3
mu_y = 0
variance_y = 15
#Create grid and multivariate normal
x = np.linspace(-10,10,500)
y = np.linspace(-10,10,500)
X, Y = np.meshgrid(x,y)
pos = np.empty(X.shape + (2,))
pos[:, :, 0] = X; pos[:, :, 1] = Y
rv = multivariate_normal([mu_x, mu_y], [[variance_x, 0], [0, variance_y]])
#Make a 3D plot
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, rv.pdf(pos),cmap='viridis',linewidth=0)
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')
plt.show()
给你这个情节:

可通过
matplotlib.mlab.bivariate_normal
获得一个更简单的版本。
它采用以下参数,因此您不必担心矩阵。
matplotlib.mlab.bivariate_normal(X, Y, sigmax=1.0, sigmay=1.0, mux=0.0, muy=0.0, sigmaxy=0.0)
这里X和Y再次是Meshgrid的结果,因此可以使用它来重新创建上述图:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.mlab import bivariate_normal
from mpl_toolkits.mplot3d import Axes3D
#Parameters to set
mu_x = 0
sigma_x = np.sqrt(3)
mu_y = 0
sigma_y = np.sqrt(15)
#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)
#Make a 3D plot
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z,cmap='viridis',linewidth=0)
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')
plt.show()
给予:

从平均值0.5和标准差0.1的正态分布中得出伪随机数。 既然如此,下面的Matlab代码是否等价于从一个在0处截断的正态分布在1处进行采样?
我想生成一个截断的正态分布,其中任何一个R中都有已知的参数。注意,我不是在寻找伪随机数生成器。 假设I有一个均值为5,标准差为1的正态分布。我能画出一个截断正态分布的值吗,在点1和点10截断?
问题内容: 使用python的matplotlib绘制3d图形时出现问题。使用以下python函数,我得到了这个图: 在这里,有孔栅格和和的功能和。代表表面颜色。 但是现在我想水平切割该图,仅保留z在-1和2之间的部分。 我想要的,用gnuplot绘制的是这样的: 我尝试了和,但是它们都没有给我想要的数字。有人知道如何使用python吗? 问题答案: 你在那里有漂亮的圆锥形交叉点:) 您要尝试
我试着增加平局的数量--仍然导致sd在96左右。
可以使用任何 Photoshop 绘画工具直接在 3D 模型上绘画,就像在 2D 图层上绘画一样。使用选择工具将特定的模型区域设为目标,或让 Photoshop 识别并高亮显示可绘画的区域。使用 3D 菜单命令可清除模型区域,从而访问内部或隐藏的部分,以便进行绘画。 直接在模型上绘画时,可以选择要应用绘画的底层纹理映射。通常情况下,绘画应用于漫射纹理映射,以便为模型材质添加颜色属性。也可以在其它纹
问题内容: 我正在制作一个需要在两个给定点之间绘制正弦波的应用程序。我有Google,也有Google,也没有找到我认为合适的东西。所以我的问题是,Android中是否有一种有效的方法来使用一些预定义的点来绘制类似波形的平滑波形?预先感谢您的任何帮助 问题答案: 您可以使用android.graphics.Path类在一组控制点之间构造一组二次或三次 Bézier样条曲线。
主要内容:第一个三维绘图程序,3D散点图,3D等高线图,3D线框图,3D曲面图最初开发的 Matplotlib,仅支持绘制 2d 图形,后来随着版本的不断更新, Matplotlib 在二维绘图的基础上,构建了一部分较为实用的 3D 绘图程序包,比如 ,通过调用该程序包一些接口可以绘制 3D散点图、3D曲面图、3D线框图等 mpl_toolkits 是 Matplotlib 的绘图工具包。 第一个三维绘图程序 下面编写第一个三维绘图程序。 首先创建一个三维绘图区域, plt
我想用R随机构造自由度为5的卡方分布,有100个观测量。这样做之后,我想计算这些观测的平均值,并使用ggplot2用条形图绘制卡方分布。以下是我的代码: 首先,构造一个df=5,obs=100的随机卡方分布的数据帧。 但是,我得到的结果如下: 我被这个问题困了几个小时,在我的全局环境中找不到任何列表。如果有人能帮助我,给我一些建议,将不胜感激。