常见的连续型分布密度函数图像
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import uniform, norm, lognorm, t, f, expon, gamma, chi2, beta, laplace, cauchy, pareto, weibull_min, multivariate_normal
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# 创建图像网格
fig, axs = plt.subplots(4, 4, figsize=(20, 16))
fig.subplots_adjust(hspace=0.4, wspace=0.4)
# 1. 均匀分布
x = np.linspace(0, 1, 100)
axs[0, 0].plot(x, uniform.pdf(x, loc=0, scale=1), color='b')
axs[0, 0].set_title('均匀分布')
axs[0, 0].grid(True, alpha=0.7)
# 2. 正态分布
x = np.linspace(-5, 5, 100)
axs[0, 1].plot(x, norm.pdf(x, loc=0, scale=1), color='g')
axs[0, 1].set_title('正态分布')
axs[0, 1].grid(True, alpha=0.7)
# 3. 对数正态分布
x = np.linspace(0.01, 10, 100)
axs[0, 2].plot(x, lognorm.pdf(x, s=1), color='r')
axs[0, 2].set_title('对数正态分布')
axs[0, 2].grid(True, alpha=0.7)
# 4. t 分布
x = np.linspace(-5, 5, 100)
axs[0, 3].plot(x, t.pdf(x, df=5), color='c')
axs[0, 3].set_title('t 分布')
axs[0, 3].grid(True, alpha=0.7)
# 5. F 分布
x = np.linspace(0.01, 5, 100)
axs[1, 0].plot(x, f.pdf(x, dfn=5, dfd=5), color='m')
axs[1, 0].set_title('F 分布')
axs[1, 0].grid(True, alpha=0.7)
# 6. 指数分布
x = np.linspace(0, 10, 100)
axs[1, 1].plot(x, expon.pdf(x, loc=0, scale=1), color='y')
axs[1, 1].set_title('指数分布')
axs[1, 1].grid(True, alpha=0.7)
# 7. 带有位置参数的指数分布
x = np.linspace(2, 12, 100)
axs[1, 2].plot(x, expon.pdf(x, loc=2, scale=1), color='k')
axs[1, 2].set_title('带有位置参数的指数分布')
axs[1, 2].grid(True, alpha=0.7)
# 8. Gamma 分布
x = np.linspace(0, 10, 100)
axs[1, 3].plot(x, gamma.pdf(x, a=2), color='orange')
axs[1, 3].set_title('Gamma 分布')
axs[1, 3].grid(True, alpha=0.7)
# 9. 卡方分布
x = np.linspace(0, 20, 100)
axs[2, 0].plot(x, chi2.pdf(x, df=5), color='purple')
axs[2, 0].set_title('卡方分布')
axs[2, 0].grid(True, alpha=0.7)
# 10. Beta 分布
x = np.linspace(0, 1, 100)
axs[2, 1].plot(x, beta.pdf(x, a=2, b=5), color='brown')
axs[2, 1].set_title('Beta 分布')
axs[2, 1].grid(True, alpha=0.7)
# 11. Laplace 分布
x = np.linspace(-5, 5, 100)
axs[2, 2].plot(x, laplace.pdf(x, loc=0, scale=1), color='pink')
axs[2, 2].set_title('Laplace 分布')
axs[2, 2].grid(True, alpha=0.7)
# 12. Cauchy 分布
x = np.linspace(-5, 5, 100)
axs[2, 3].plot(x, cauchy.pdf(x, loc=0, scale=1), color='gray')
axs[2, 3].set_title('Cauchy 分布')
axs[2, 3].grid(True, alpha=0.7)
# 13. Pareto 分布
x = np.linspace(1, 10, 100)
axs[3, 0].plot(x, pareto.pdf(x, b=2, scale=1), color='olive')
axs[3, 0].set_title('Pareto 分布')
axs[3, 0].grid(True, alpha=0.7)
# 14. 幂函数分布
x = np.linspace(0, 1, 100)
a = 2
axs[3, 1].plot(x, a * x**(a - 1), color='teal')
axs[3, 1].set_title('幂函数分布')
axs[3, 1].grid(True, alpha=0.7)
# 15. Weibull 分布
x = np.linspace(0, 5, 100)
axs[3, 2].plot(x, weibull_min.pdf(x, c=2), color='navy')
axs[3, 2].set_title('Weibull 分布')
axs[3, 2].grid(True, alpha=0.7)
# 16. 多元正态分布(展示二维情况)
x = np.linspace(-3, 3, 100)
y = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(x, y)
pos = np.dstack((X, Y))
rv = multivariate_normal([0, 0], [[1, 0.5], [0.5, 1]])
axs[3, 3].contourf(X, Y, rv.pdf(pos), cmap='viridis')
axs[3, 3].set_title('多元正态分布')
axs[3, 3].grid(False)
# 调整图像布局
plt.tight_layout()
# 显示所有图像
plt.show()
posted on 2025-05-22 16:07 Indian_Mysore 阅读(16) 评论(0) 收藏 举报
浙公网安备 33010602011771号