【发布时间】:2019-01-15 04:28:59
【问题描述】:
所以我在 Python Crash Course book 中做题,在第 15 章“自己尝试”部分问题 15-10 的末尾,你的任务是“尝试使用 matplotlib 进行模压可视化...... " 我已经列出了所有信息并且没有错误,但是当程序运行时,直方图会显示图形和轴,但不会显示实际数据。有人知道为什么会发生这种情况以及我缺少什么吗?
有一个名为 Die() 的模块和类用于初始化并随机创建卷。这个类和程序完美运行,并在下面的程序中调用。
骰子频率直方图应用
import matplotlib
import matplotlib.pyplot as plt
from die import Die
# create two D6 dice
die_1 = Die()
die_2 = Die()
# make some rolls, and store results in a list.
results = []
for roll_num in range(5000):
result = die_1.roll() + die_2.roll()
results.append(result)
# analyze the results.
frequencies = []
max_result = die_1.num_sides + die_2.num_sides
for value in range(2, max_result+1):
frequency = results.count(value)
frequencies.append(frequency)
plt.bins = []
x_max = die_1.num_sides + die_2.num_sides
for label in range(2, x_max+1):
plt.bins.append(label)
print(frequencies)
plt.hist(frequencies, plt.bins, histtype = 'bar', facecolor = 'blue')
plt.title("Dice Plot")
plt.xlabel("Results")
plt.ylabel("Frequency of Result")
plt.axis([0,12,0,300])
plt.show()
我希望得到一组看起来像正态曲线模型的数据。但是,我没有显示任何数据。再次显示图形和轴,但不显示实际数据。
【问题讨论】:
-
print(results)提供了什么? -
追加到
results的位置不会缩进到循环块中,因此在for roll_num in range(5000):之后只会追加一个结果。 -
当我读到这篇文章时,看起来
bins应该是一个整数,而不是一个范围? matplotlib.org/1.2.1/examples/pylab_examples/… -
plt.bins = []- 为什么要向plt添加 bin 属性?
标签: python matplotlib histogram