我正在用Python编写代码(如下所示),我想生成一个直方图,显示宽度= 1的bin内的y值的频率。例如,有多少个y在6-7,7-8之间,等等。但是,绘图只包含y的最终值。有人知道我如何包含所有y值吗?提前谢谢你!
import numpy as np
import matplotlib.pyplot as plt
N = 10
for i in range(0,N):
x = 1 + np.random.random()
print("x = ", x)
y = 2*(1 + 2*x)
print("y = ", y)
z = 4*y
print("z = ", z)
h = [y]
plt.hist(h, bins = 10)
plt.show()发布于 2020-05-05 01:30:30
要创建一个列表,请在循环之前生成一个空列表。然后在循环期间追加列表项。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
#use print commands to check the type and content of your variables
N = 10
ys=[] # empty list
for i in range(0,N):
x = 1 + np.random.random()
y = 2*(1 + 2*x)
ys.append(y)
plt.hist(ys, bins = 10)
plt.show()

发布于 2020-05-05 01:41:28
类似于@list runner66的答案,但直接使用numpy数组,而不是循环遍历列表:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
N = 10
x = 1 + np.random.random(N)
y = 2*(1 + 2*x)
plt.hist(y, bins=4, range=(6,10))
plt.show()

https://stackoverflow.com/questions/61598040
复制相似问题