python绘制正态分布和t分布图形
这段代码使用 Python 的 numpy
、matplotlib
和 scipy
库来绘制正态分布和 t 分布的概率密度函数(PDF)。以下是对代码中复杂或难懂部分的详细解释:
1. 导入库
import numpy as npimport matplotlib.pyplot as mpfrom scipy import stats
numpy
是 Python 中用于数值计算的库,通常使用别名np
。matplotlib.pyplot
是用于创建可视化图表的库,这里使用别名mp
。scipy.stats
提供了大量的概率分布和统计函数。
2. 生成数据点
x=np.linspace(-4,4,500)
np.linspace(-4, 4, 500)
生成 500 个在 -4 到 4 之间均匀分布的数,这些数将作为绘图时的 x 轴坐标值。
3. 创建图形并设置绘图属性
mp.figure('Normal and t Distribution',facecolor='lightgray')mp.title('Normal Distribution',fontsize=20)mp.xlabel('x',fontsize=14)mp.ylabel('y',fontsize=14)mp.tick_params(labelsize=10)mp.grid(linestyle=':')
mp.figure()
创建一个新的图形窗口,设置窗口标题和背景颜色。mp.title()
、mp.xlabel()
和mp.ylabel()
分别设置图表的标题、x 轴标签和 y 轴标签。mp.tick_params()
设置坐标轴刻度标签的字体大小。mp.grid()
为图表添加虚线样式的网格。
4. 绘制正态分布
mp.plot(x,stats.norm.pdf(x),label='Normal')mp.show()
stats.norm.pdf(x)
计算标准正态分布在给定 x 值处的概率密度函数值。mp.plot()
绘制正态分布的概率密度函数曲线。mp.show()
显示绘制好的图表。
5. 绘制 t 分布
mp.title('t Distribution',fontsize=20)mp.plot(x,stats.t.pdf (x,5),label='n=5')mp.plot(x,stats.t.pdf (x,30),label='n=30')mp.legend()mp.show()
stats.t.pdf(x, 5)
和stats.t.pdf(x, 30)
分别计算自由度为 5 和 30 的 t 分布的概率密度函数值。mp.plot()
绘制 t 分布的概率密度函数曲线。mp.legend()
为图表添加图例,用于区分不同的曲线。mp.show()
显示绘制好的图表。
改进建议
- 代码可读性:添加注释来解释代码各部分的用途。
- 性能:当前代码简单高效,没有明显的性能问题。但如果需要绘制更多分布,可以考虑使用循环来减少代码重复。
- 绘图逻辑:当前代码调用了两次
mp.show()
,会打开两个独立的窗口。可以使用子图将两个分布显示在同一个窗口中。