python画分布图3

# -*- coding: cp936 -*-
import numpy as np
import matplotlib.pyplot as plt
import math

def readData():
    #从文件中读取数据
    f = open('涨幅.txt','r')
    data = []
    while True:
        line = f.readline()
        if not line:
            break
        data.append((float)(line))
    return data

def gauss(data):
    delta = 0.15 #展宽系数
    quality = 100
    min_ = min(data)
    max_ = max(data)
    x = np.linspace(min_, max_, quality)
    y = [0]*len(x)
    
    for i in range(quality):
        for d in data:
            y[i] = y[i] + math.exp(-(x[i]-d)*(x[i]-d) / (2*delta*delta))
        y[i] = y[i] / (len(x)*math.sqrt(2*math.pi)*delta)
    return x,y
    
    
def drawDistribution():
    data = readData()
    x,y = gauss(data)
    plt.figure()
    #plt.xlim(-22,22)
    plt.plot(x, y)
    plt.show()

if __name__ == '__main__':
    drawDistribution()

  

posted on 2013-07-15 22:08  赛欧拉  阅读(523)  评论(0)    收藏  举报