β

使用Python画CDF图

Like World 1247 阅读

依赖包:numpy, matplotlib, statsmodels

实现代码借鉴于参考文献[1]

#!/usr/bin/env python
# encoding: utf-8

import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
import sys


def cdf_plot(data, name, number):
    """
    data: 一组数据
    name: 在legend上显示的名称
    number: 数据最大最小值之间划分多少段
    """
    ecdf = sm.distributions.ECDF(data)
    x = np.linspace(min(data), max(data), number)
    y = ecdf(x)

    #plt.step(x, y, label=name)
    plt.plot(x, y, label=name)


def main():
    for f in sys.argv[1:]:
        data = open(f).readlines()
        data = map(float, data)
        cdf_plot(data, f, 100)

    #plt.xscale('log')
    plt.legend(bbox_to_anchor=(0.65, 0.3), loc=2, borderaxespad=0.)
    plt.show() #显示CDF图

if __name__ == '__main__':
    main()

将代码保存为cdf.py,即可运行。后面跟几个文件,每个文件全是数据

./cdf.py data1 data2 data3

References

[1] How to plot empirical cdf in matplotlib in Python?

作者:Like World
原文地址:使用Python画CDF图, 感谢原作者分享。