numpy+plot初试

#coding:utf-8
"""
灵活设置筛子个数,比如3个筛子
"""
import numpy as np
import matplotlib.pyplot as plt
#图形标注支持中文
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False

def main():
    totaltimes =20000
    shaizi_nmb=4
    shape1 = int(shaizi_nmb * 6)
    rollall_arr = np.empty(totaltimes)

    for a in range(shaizi_nmb):
        roll1_arr=np.random.randint(1, 7, size=totaltimes)#非np的random包含后面一个值,但np下randint未包含
        #numpy的两个直接相加就是对于位置的数相加
        rollall_arr +=roll1_arr


    #将直方图的数据存储起来,bins代表x坐标,比实际数值个数多1个就好
    hist, bins= np.histogram(rollall_arr, bins=range(2,shape1+2))
    print(hist)
    print(bins)

    #可视化#normed=1是归一化看概率
    plt.hist(rollall_arr, bins=range(2,shape1+2),density=1,edgecolor="black",rwidth=0.8)

    #设置x轴,坐标轴点的显示
    tick_labels_num=list(bins)
    tick_labels=[]
    for i in tick_labels_num:
        tick_labels.append("{}点".format(i))
    #tick_pos = np.arange(2,shape1+2)+0.5#0.5是为了让文字显示在直方图对应图形的正下方
    tick_pos = bins+0.5
    plt.xticks(tick_pos,tick_labels)

    plt.title("摇{}个筛子的结果分布".format(shaizi_nmb))
    plt.xlabel("点数")
    plt.ylabel("频次")

    plt.show()


if __name__=="__main__":
    main()

  

 

posted @ 2019-04-12 18:37  Niuuer  阅读(477)  评论(0编辑  收藏  举报