火柴棒图python绘画

使用Python绘制二项分布的概率质量函数(PMF)

在这篇博客中,我们将探讨如何使用Python中的scipy库和matplotlib库来绘制二项分布的概率质量函数(PMF)。二项分布是统计学中常见的离散概率分布,描述了在固定次数的独立试验中,成功次数的分布情况。

代码示例

以下是一个完整的代码示例,展示了如何绘制二项分布的PMF:

python 复制代码
from scipy.stats import binom
import pylab as plt

# 定义二项分布的参数
n = 6  # 试验次数
p = 0.3  # 成功概率

# 生成可能的成功次数
x = plt.arange(7)  # 0到6的整数
y = binom.pmf(x, n, p)  # 计算每个成功次数的概率

# 创建第一个子图:竖线图
plt.subplot(121)
plt.plot(x, y, 'ro')  # 绘制红色圆点
plt.vlines(x, 0, y, 'k', lw=2, alpha=0.5)  # 绘制竖线
plt.xlabel('成功次数')
plt.ylabel('概率')
plt.title('竖线图')

# 创建第二个子图:茎叶图
plt.subplot(122)
plt.stem(x, y, use_line_collection=True)  # 绘制茎叶图
plt.xlabel('成功次数')
plt.ylabel('概率')
plt.title('茎叶图')

# 保存图像并显示
plt.savefig("figure9_2.png", dpi=500)
plt.show()
代码解释
  1. 导入库

    python 复制代码
    from scipy.stats import binom
    import pylab as plt

    我们导入了scipy.stats中的binom模块来处理二项分布,并导入pylab作为绘图工具。

  2. 定义参数

    python 复制代码
    n = 6  # 试验次数
    p = 0.3  # 成功概率

    这里我们定义了二项分布的参数:试验次数n和成功概率p

  3. 生成数据

    python 复制代码
    x = plt.arange(7)  # 0到6的整数
    y = binom.pmf(x, n, p)  # 计算每个成功次数的概率

    我们生成了可能的成功次数x(从0到6),并计算了每个成功次数的概率y

  4. 绘制竖线图

    python 复制代码
    plt.subplot(121)
    plt.plot(x, y, 'ro')  # 绘制红色圆点
    plt.vlines(x, 0, y, 'k', lw=2, alpha=0.5)  # 绘制竖线
    plt.xlabel('成功次数')
    plt.ylabel('概率')
    plt.title('竖线图')

    在第一个子图中,我们绘制了竖线图,使用红色圆点表示每个成功次数的概率,并用黑色竖线从x轴延伸到每个点。

  5. 绘制茎叶图

    python 复制代码
    plt.subplot(122)
    plt.stem(x, y, use_line_collection=True)  # 绘制茎叶图
    plt.xlabel('成功次数')
    plt.ylabel('概率')
    plt.title('茎叶图')

    在第二个子图中,我们绘制了茎叶图,使用竖线和圆点来表示每个成功次数的概率。

  6. 保存并显示图像

    python 复制代码
    plt.savefig("figure9_2.png", dpi=500)
    plt.show()

    最后,我们将图像保存为高分辨率的PNG文件,并显示图像。

总结

通过这篇博客,我们学习了如何使用Python绘制二项分布的概率质量函数(PMF)。我们使用了scipy库来计算二项分布的概率,并使用matplotlib库绘制了竖线图和茎叶图。这些图表可以帮助我们更好地理解二项分布的特性和行为。

希望这篇博客对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言。谢谢阅读!

相关推荐
程序员-Benothing4 分钟前
Java集合:List实现类深度对比
java·开发语言·后端·面试·list
酷在前行12 分钟前
【R论文复刻】Nature Communications 冲积图进阶:状态转移、流带排序与多面板排版(保姆级教程)
开发语言·r语言
薛少杰24 分钟前
Python异步系统学习路线第59讲_核心原理与实战案例详解【技巧】
python·事件循环·异步编程·实战案例·协程调度
减瓦26 分钟前
用 Git 为本地文件打造一台时光机
开发语言·git·编辑器
一次旅行30 分钟前
fzf+ripgrep+fd终端三合一实战:一套检索工具链,大幅提升大型项目开发效率
人工智能·python·github
卷无止境33 分钟前
当代码要上线前,谁在替你把关?——Python安全审查的方法论与实践
后端·python
冻柠檬飞冰走茶35 分钟前
PTA基础编程题目集 7-37 整数分解为若干项之和(C语言实现)
c语言·开发语言·数据结构·算法
卷无止境41 分钟前
Python Dataclasses:让类定义回归简洁的艺术
后端·python
北冥you鱼44 分钟前
Go语言数组越界处理机制详解:从编译时检查到运行时panic
java·python·golang
Python私教1 小时前
Django 做一个 AI 销售助手:读取客户记录,自动生成跟进计划
人工智能·python·django