【问题标题】:Plot a distribution graph in Python在 Python 中绘制分布图
【发布时间】:2015-08-06 00:47:35
【问题描述】:

我已经编写了一个可以完成这项工作的函数,但是它看起来特别难看。 你能给我一些建议让它更pythonic吗? 首先,我从我的数据库中获取一些数据(通过 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()

【问题讨论】:

    标签: list python-2.7 numpy matplotlib


    【解决方案1】:

    Matplotlib 几乎可以做所有事情:

    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()
    

    我希望这会对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-25
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 2022-10-30
      • 2018-05-15
      • 2021-06-26
      • 1970-01-01
      相关资源
      最近更新 更多