You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python实现支持CLI参数输入的二项分布PDF与CDF绘图

绘制可自定义参数的二项分布PDF/CDF(Python CLI实现)

核心实现思路

使用scipy.stats.binom生成二项分布的概率质量函数(PDF/PMF)和累积分布函数(CDF),通过argparse实现命令行参数输入,最后用matplotlib绘制双图对比展示。

完整代码

import argparse
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt

def main():
    # 解析命令行参数
    parser = argparse.ArgumentParser(description='绘制二项分布的PDF(概率质量函数)和CDF(累积分布函数)')
    parser.add_argument('-n', '--trials', type=int, required=True, 
                        help='试验总次数,必须为正整数')
    parser.add_argument('-p', '--probability', type=float, required=True, 
                        help='单次试验成功概率,取值范围0~1')
    parser.add_argument('-o', '--output', type=str, 
                        help='可选:图形保存路径(如./binom_plot.png),不指定则直接显示图形')
    
    args = parser.parse_args()

    # 参数合法性校验
    if args.trials <= 0:
        raise ValueError("试验次数必须是正整数")
    if not (0 <= args.probability <= 1):
        raise ValueError("成功概率必须在0到1之间")

    # 生成成功次数的取值范围(0到n)
    x = np.arange(0, args.trials + 1)
    # 计算PDF和CDF
    binom_pmf = stats.binom.pmf(x, n=args.trials, p=args.probability)
    binom_cdf = stats.binom.cdf(x, n=args.trials, p=args.probability)

    # 设置绘图布局
    fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))

    # 绘制PDF(离散分布用柱状图)
    ax1.bar(x, binom_pmf, color='#1f77b4', alpha=0.7)
    ax1.set_title(f'二项分布PDF (n={args.trials}, p={args.probability})')
    ax1.set_xlabel('成功次数')
    ax1.set_ylabel('概率')
    ax1.grid(axis='y', linestyle='--', alpha=0.7)

    # 绘制CDF(阶梯图)
    ax2.step(x, binom_cdf, color='#ff7f0e', where='post', linewidth=2)
    ax2.set_title(f'二项分布CDF (n={args.trials}, p={args.probability})')
    ax2.set_xlabel('成功次数')
    ax2.set_ylabel('累积概率')
    ax2.grid(axis='y', linestyle='--', alpha=0.7)

    # 调整子图间距
    plt.tight_layout()

    # 保存或显示图形
    if args.output:
        plt.savefig(args.output, dpi=300, bbox_inches='tight')
        print(f"图形已保存至:{args.output}")
    else:
        plt.show()

if __name__ == '__main__':
    main()

代码说明

  • CLI参数解析:通过argparse强制要求用户输入-n(试验次数)和-p(成功概率),同时支持可选的-o参数保存图形。
  • 参数校验:确保输入的试验次数为正整数、成功概率在0~1范围内,避免无效计算。
  • 分布计算:利用scipy.stats.binom.pmf()和binom.cdf()直接生成对应分布值,无需手动实现公式。
  • 绘图细节:PDF用柱状图展示离散概率,CDF用阶梯图体现累积特性,添加标题、坐标轴标签和网格提升可读性。

使用方法

  1. 确保已安装依赖库:
pip install numpy scipy matplotlib
  1. 运行脚本(示例):
# 直接显示图形(试验次数20,成功概率0.3)
python binom_plot.py -n 20 -p 0.3

# 保存图形到指定路径
python binom_plot.py -n 10 -p 0.5 -o ./binom_distribution.png

内容的提问来源于stack exchange,提问作者Oladiano Meriko Onaiker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 18:15:51