请用python代码画一个二维正太分布的图片
时间: 2024-09-27 09:09:22 浏览: 25
在Python中,我们可以使用matplotlib库以及numpy库来绘制二维正态分布。首先,我们需要生成一些随机点,然后计算它们的概率密度并将其映射到颜色上。以下是一个简单的示例:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import multivariate_normal
# 定义正态分布的均值和协方差矩阵
mean = [0, 0]
cov = [[1, 0], [0, 1]] # 单位圆上的二维正态分布
# 创建网格用于描绘概率密度
x, y = np.mgrid[-3:3:.01, -3:3:.01] # [-3, 3]是一个较大的范围,你可以调整它
pos = np.empty(x.shape + (2,))
pos[:, :, 0] = x
pos[:, :, 1] = y
# 计算概率密度
rv = multivariate_normal(mean, cov)
z = rv.pdf(pos)
# 绘制图像
plt.imshow(z.T, extent=(-3, 3, -3, 3), origin='lower', cmap='viridis')
plt.colorbar()
plt.title('二维正态分布')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
```
这个代码会生成一个显示二维正态分布的热力图,颜色越深表示概率越大。
相关问题
用python画一个二维坐标轴
可以使用matplotlib库来画二维坐标轴,示例代码如下:
```python
import matplotlib.pyplot as plt
# 定义坐标轴的范围
plt.xlim(-10, 10)
plt.ylim(-10, 10)
# 画出x轴和y轴
plt.axhline(0, color='gray')
plt.axvline(0, color='gray')
# 显示图形
plt.show()
```
这段代码会画出一个范围在[-10, 10]的二维坐标轴。
用python画一个二维密度图应用实例
好的,以下是一个用Python绘制二维密度图的应用实例:
首先需要导入必要的库:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import kde
```
然后生成一些随机数据:
```python
# 生成二维随机数据
x = np.random.normal(size=500)
y = np.random.normal(size=500)
```
接下来,使用kde库计算出密度:
```python
# 使用kde计算密度
k = kde.gaussian_kde([x,y])
xi, yi = np.mgrid[x.min():x.max():100j, y.min():y.max():100j]
zi = k(np.vstack([xi.flatten(), yi.flatten()]))
```
最后,使用matplotlib库绘制出密度图:
```python
# 绘制二维密度图
plt.pcolormesh(xi, yi, zi.reshape(xi.shape), cmap=plt.cm.BuGn_r)
plt.colorbar()
plt.show()
```
完整代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import kde
# 生成二维随机数据
x = np.random.normal(size=500)
y = np.random.normal(size=500)
# 使用kde计算密度
k = kde.gaussian_kde([x,y])
xi, yi = np.mgrid[x.min():x.max():100j, y.min():y.max():100j]
zi = k(np.vstack([xi.flatten(), yi.flatten()]))
# 绘制二维密度图
plt.pcolormesh(xi, yi, zi.reshape(xi.shape), cmap=plt.cm.BuGn_r)
plt.colorbar()
plt.show()
```