我使用代码生成100个1到100之间的随机数:
def histogram():
for x in range(100):
x = random.randint(1, 100)
print(x)
现在我试图在直方图中表示这些信息,我将matplotlib.pyplot导入为plt并试图构建它,但我似乎遇到了问题。
我试过了:
def histogram():
for x in range(100):
x = random.randint(1, 100)
return x
histogram_plot = histogram()
plt.hist(histogram_plot)
plt.show()
我也试过了:
def histogram():
for x in range(100):
x = random.randint(1, 100)
print(x)
plt.hist(x)
plt.show()
我做错了什么?
答案 0 :(得分:3)
这是一个与您的代码类似的小工作示例
>>> import matplotlib.pyplot as plt
>>> import random
>>> data = [random.randint(1, 100) for _ in range(100)]
>>> plt.hist(data)
(array([ 15., 13., 9., 9., 11., 9., 9., 11., 6., 8.]),
array([ 1. , 10.9, 20.8, 30.7, 40.6, 50.5, 60.4, 70.3, 80.2, 90.1, 100. ]),
<a list of 10 Patch objects>)
>>> plt.show()
您遇到的问题出在histogram
函数中。您每次迭代都会将变量x
重新分配给随机int
,而不是构建list
个随机值。
答案 1 :(得分:1)
在第一个函数中,你在循环中return
,因此结果永远不会被绘制,因为解释器永远不会到达绘图代码。在第二个示例中,您将迭代并每次绘制单个实例。
只需创建一个随机数列表并绘制它们:
def histogram():
xs = [random.randint(1, 100) for _ in range(100)]
print(x)
plt.hist(xs)
plt.show()