在学习的过程中,遇到一个问题,这个问题就是需要使用python画出一个直方图,那么我从网上学习的过程中总结一下内容,希望能帮助读者快速理解和使用相应的代码.代码和注释如下:
#首先导入相关的包(以下每个例子都需要这么导入):
import matplotlib.pyplot as plt
import numpy as np
1.一组数据
#生成随机数,并打印:
x = np.random.randint(1,10,50) #生成1到10的随机数,一共生成50个
print(x)
plt.hist(x, bins=5) #自动进行区间范围划分,这里是将1-9来划分成平均5个区间
#下面注释的代码可以自己执行下,就能明白什么意思
# plt.hist(x, bins=5, range=[0, 15]) # 将数据分成5个区间,区间范围为0,15
# plt.hist(x, bins=[1, 5, 7, 10]) # 这里将数据分成三个区间[1,5]、[5,7]、[7,10]
# plt.hist(x, bins=5,density=True) # density=True求出每个区间值占总数的百分值(这里是小数),之和等于1
plt.show()
结果如图(由于是随机生成的数据,结果图可能和我的图片不一致):
2.多组数据
new_x = np.random.randint(1, 10, (50, 5)) #生成1到10的随机数,一共生成50个,将这50个数据每5个数据分为一组
print(new_x)
plt.hist(new_x, bins=10)
plt.show()
结果如图
3.生成正太分布直方图
plt.rcParams['font.family'] = 'FangSong'
x_new = np.random.randn(1000)+10 # 生成标准的以10为中心的正太分布
plt.hist(x_new, bins=30, label="以10为中心的正太分布")
plt.hist(x_new + 2, bins=30 , alpha=0.4, label="以12为中心的正太分布")
plt.xlabel("区间")
plt.ylabel("频数")
plt.title("直方图")
plt.legend(loc="upper right") #图例 右上角
plt.show()
结果如图
注意:欢迎转载,转载时请注明来源