火柴棒图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库绘制了竖线图和茎叶图。这些图表可以帮助我们更好地理解二项分布的特性和行为。

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

相关推荐
煤泥做不到的!10 分钟前
挑战一个月基本掌握C++(第十一天)进阶文件,异常处理,动态内存
开发语言·c++
F-2H13 分钟前
C语言:指针4(常量指针和指针常量及动态内存分配)
java·linux·c语言·开发语言·前端·c++
bryant_meng1 小时前
【python】OpenCV—Image Moments
开发语言·python·opencv·moments·图片矩
若亦_Royi2 小时前
C++ 的大括号的用法合集
开发语言·c++
KevinRay_2 小时前
Python超能力:高级技巧让你的代码飞起来
网络·人工智能·python·lambda表达式·列表推导式·python高级技巧
Captain823Jack2 小时前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
资源补给站3 小时前
大恒相机开发(2)—Python软触发调用采集图像
开发语言·python·数码相机
Captain823Jack3 小时前
w04_nlp大模型训练·中文分词
人工智能·python·深度学习·神经网络·算法·自然语言处理·中文分词
m0_748247553 小时前
Web 应用项目开发全流程解析与实战经验分享
开发语言·前端·php
6.943 小时前
Scala学习记录 递归调用 练习
开发语言·学习·scala