#假设你获取了250部电影的时长(列表a中),希望统计出这些电影时长的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率)等信息,你应该如何呈现这些数据?
#a=[131,98,125,131,124,139,131,117,128,108,135,138,131,102,
107, 114,119,128,121,142,127,130,124,101, 110,116,117,110,
128,128,115,99,136,126,134,95,138,117, 111,78,132,124,113,
150, 110, 117,86,95,144,105,126,130,126,130,126,116,123,
106,112,138,123,86,101,99,136,123, 117, 119, 105,137,123,
128,125, 104, 109, 134,125,127,105, 120,107, 129,116,108,132,
103,136, 118, 102,120,114,105,115,132,145,119,121,112,139,
125,138,109,132,134,156,106,117, 127, 144,139,139,119, 140,
83,110, 102,123,107,143,115, 136, 78, 139, 123,112,118,125,
109,119,133,112,114,122,109,106,123,116,131,127,115, 118,112,
135,115,146,137, 116,103, 144,83,123,111, 110,100,154,136,
100,118,119,133,134,106,129,126,110, 111,109,141,120,117,106,
149,122,122, 110,118, 127,121, 114,125,126,114,140,103,130,106,
141,117,106,114, 121,114,133,137,92,121, 112,146,97,137,105,98,
117, 112,81,97,139,113,134,106,144,110,137,137, 111,104,117, 100,
111,101,110,105, 129,137,112, 120, 113, 133, 112,83,94,146,133,101,
131,116,111,84, 137,115,122,106,144,109,123,116,111,111,133,150]
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = {'family':'SimHei',
'weight':'bold',
'size':'12'}
plt.rc('font', **font)
plt.rc('axes', unicode_minus=False)
a=[131,98,125,131,124,139,131,117,128,108,135,138,131,102,
107, 114,119,128,121,142,127,130,124,101, 110,116,117,110,
128,128,115,99,136,126,134,95,138,117, 111,78,132,124,113,
150, 110, 117,86,95,144,105,126,130,126,130,126,116,123,
106,112,138,123,86,101,99,136,123, 117, 119, 105,137,123,
128,125, 104, 109, 134,125,127,105, 120,107, 129,116,108,132,
103,136, 118, 102,120,114,105,115,132,145,119,121,112,139,
125,138,109,132,134,156,106,117, 127, 144,139,139,119, 140,
83,110, 102,123,107,143,115, 136, 78, 139, 123,112,118,125,
109,119,133,112,114,122,109,106,123,116,131,127,115, 118,112,
135,115,146,137, 116,103, 144,83,123,111, 110,100,154,136,
100,118,119,133,134,106,129,126,110, 111,109,141,120,117,106,
149,122,122, 110,118, 127,121, 114,125,126,114,140,103,130,106,
141,117,106,114, 121,114,133,137,92,121, 112,146,97,137,105,98,
117, 112,81,97,139,113,134,106,144,110,137,137, 111,104,117, 100,
111,101,110,105, 129,137,112, 120, 113, 133, 112,83,94,146,133,101,
131,116,111,84, 137,115,122,106,144,109,123,116,111,111,133,150]
print(len(a))
plt.figure(figsize=(20,8),dpi = 80)
#plt.hist(a,num_bins)该函数参数需要统计的数据a,以及组数num_bins。
#其中组数num_bins= int( (max(a)-min(a) ) /bin_width)
#组数:将数据分组,当数据在100个以内时,按数据多少常分5-12。
bin_width = 6#bin_width的值选择,尽量能将(max(a)-min(a)整除,否则g画的直方图将有问题
num_bins = int((max(a)-min(a))/bin_width)
print(num_bins)
plt.subplot(121)
plt.hist(a,num_bins)
#设置x轴刻度
plt.xticks(range(min(a),max(a)+bin_width,bin_width))
plt.xlabel("电影时长(分钟)")
plt.ylabel("电影数(部)")
plt.title("250部电影的时长直方图")
plt.grid(alpha = 0.2)
plt.subplot(122)
plt.hist(a,num_bins,density = True)#频率直方图
#设置x轴刻度
plt.xticks(range(min(a),max(a)+bin_width,bin_width))
plt.xlabel("电影时长(分钟)")
plt.ylabel("电影频率")
plt.title("250部电影时长的频率直方图")
plt.grid(alpha = 0.2)
plt.savefig("250部电影的时长直方图.png")
plt.show()
matplotlib绘制直方图
最新推荐文章于 2022-08-17 15:42:22 发布