List 用Python绘制分布图

List 用Python绘制分布图,list,python-2.7,numpy,matplotlib,List,Python 2.7,Numpy,Matplotlib,我已经写了一个函数来完成这项工作,但是它看起来特别难看。 你能给我一些建议让它更像蟒蛇吗? 首先,我从数据库中获取一些数据(通过extractData)。然后,在计算完每一个长度后,我必须对它们进行检查 因此,我想计算每个持续时间少于x天的事件,并通过bar将其绘制到matplotlib中 谢谢你的帮助 import numpy as np listAct,less1,less2,less3,less4,less5,less6,less7,less8,less9=[],0,0,0,0,0,0,

我已经写了一个函数来完成这项工作,但是它看起来特别难看。 你能给我一些建议让它更像蟒蛇吗? 首先,我从数据库中获取一些数据(通过extractData)。然后,在计算完每一个长度后,我必须对它们进行检查

因此,我想计算每个持续时间少于x天的事件,并通过bar将其绘制到matplotlib中

谢谢你的帮助

import numpy as np

listAct,less1,less2,less3,less4,less5,less6,less7,less8,less9=[],0,0,0,0,0,0,0,0,0
less10,less11,less12,less13,less14,sup14=0,0,0,0,0,0

for pos,rem in np.array(db.extractData(mess)):
    act = gen.unixTime_to_dateTime(rem)- gen.unixTime_to_dateTime(pos)
    lenAct = act.days  +act.seconds/float(86400)

    if lenAct < 1:
        less1+=1
    elif lenAct<2:
        less2+=1
    elif lenAct<3:
        less3+=1
    elif lenAct<4:
        less4+=1
    elif lenAct<5: 
        less5+=1
    elif lenAct<6:
        less6+=1
    elif lenAct<7:
        less7+=1
    elif lenAct<8:
        less8+=1
    elif lenAct<9:
        less9+=1 
    elif lenAct<10:
        less10+=1
    elif lenAct<11:
        less11+=1
    elif lenAct<12:
        less12+=1
    elif lenAct<13:
        less13+=1
    elif lenAct<14:
        less14+=1
    else:
        sup14+=1

    listAct.append(lenAct)    

study=[less1,less2,less3,less4,less5,less6,less7,less8,less9,less10,less11]
plt.bar(range(1,12),study)
plt.show()
将numpy导入为np
列表行为,less1,less2,less3,less4,less5,less6,less7,less8,less9=[],0,0,0,0,0,0,0,0
less10,less11,less12,less13,less14,sup14=0,0,0,0,0
对于np.数组中的pos、rem(db.extractData(mess)):
act=gen.unixTime\u to\u dateTime(rem)-gen.unixTime\u to\u dateTime(pos)
lenAct=act.days+act.seconds/浮动(86400)
如果lenAct<1:
less1+=1

elif lenActMatplotlib几乎可以完成所有工作:

import matplotlib.pyplot as plt
import numpy as np

listAct = []
for pos,rem in np.array(db.extractData(mess)):
    act = gen.unixTime_to_dateTime(rem)- gen.unixTime_to_dateTime(pos) ##act is a datetime object
    listAct.append(act.days + act.seconds/float(86400)) 

bins = range(1,15)
plt.hist(listAct,bins)
plt.show()
我希望这能帮助别人