matplotlib 正态分布
时间: 2023-11-08 17:03:34 浏览: 114
matplotlib 是一个广泛使用的绘图库,可以用来创建各种类型的图形,包括正态分布图。要在 matplotlib 中绘制正态分布曲线,可以使用 scipy.stats 模块中的 norm 函数生成随机样本,并使用 matplotlib.pyplot 模块中的 plot 函数将这些样本绘制成曲线。
下面是一个示例代码,展示了如何使用 matplotlib 绘制正态分布曲线:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 生成随机样本
samples = np.random.normal(loc=0, scale=1, size=1000)
# 计算正态分布的参数
mu, sigma = norm.fit(samples)
# 绘制直方图
plt.hist(samples, bins=30, density=True, alpha=0.5)
# 绘制正态分布曲线
x = np.linspace(samples.min(), samples.max(), 100)
y = norm.pdf(x, mu, sigma)
plt.plot(x, y, 'r-', linewidth=2)
# 设置图形标题和坐标轴标签
plt.title('Normal Distribution')
plt.xlabel('Value')
plt.ylabel('Density')
# 显示图形
plt.show()
```
相关问题
matplotlib正态分布图
对于绘制正态分布图,你可以使用 matplotlib 库。下面是一个示例代码,可以绘制正态分布的直方图和概率密度曲线:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成正态分布的随机数据
mean = 0
std = 1
data = np.random.normal(mean, std, 10000)
# 绘制直方图
plt.hist(data, bins=50, density=True, alpha=0.7, color='blue')
# 绘制概率密度曲线
x = np.linspace(data.min(), data.max(), 100)
y = (1 / (std * np.sqrt(2 * np.pi))) * np.exp(-0.5 * ((x - mean) / std) ** 2)
plt.plot(x, y, color='red', linewidth=2)
# 添加标题和标签
plt.title('Normal Distribution')
plt.xlabel('Value')
plt.ylabel('Probability Density')
plt.show()
```
这段代码首先使用 `np.random.normal()` 生成了一个均值为0,标准差为1的随机正态分布数据。然后通过 `plt.hist()` 绘制了直方图,并使用 `plt.plot()` 绘制了概率密度曲线。最后,添加了标题和标签,并通过 `plt.show()` 展示图像。
希望这个示例能帮助到你。如有更多问题,请继续提问。
使用matplotlib画正态分布直方图
以下是使用matplotlib画正态分布直方图的示例代码:
```
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 生成正态分布数据
mu, sigma = 0, 1 # 正态分布的均值和标准差
data = np.random.normal(mu, sigma, 1000)
# 画直方图
count, bins, ignored = plt.hist(data, 30, density=True)
# 画正态分布曲线
plt.plot(bins, norm.pdf(bins, mu, sigma), linewidth=2, color='r')
# 设置标题、x轴标签、y轴标签
plt.title('Normal Distribution Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')
# 显示图像
plt.show()
```
解释一下代码:
- 第1行导入需要的库。
- 第4行生成1000个均值为0、标准差为1的正态分布数据。
- 第7行用`plt.hist()`方法画直方图,其中`30`表示分成30个区间,`density=True`表示将频数转化为频率,即概率密度。
- 第10行用`norm.pdf()`方法画正态分布曲线,其中`mu`和`sigma`是正态分布的均值和标准差,`bins`是x轴上的数值范围。
- 第13-15行设置标题、x轴标签、y轴标签。
- 最后一行用`plt.show()`方法显示图像。
阅读全文