从循环生成的数组绘制Python直方图

从循环生成的数组绘制Python直方图,python,arrays,matplotlib,histogram,Python,Arrays,Matplotlib,Histogram,当我试图绘制它时,尽管生成的图形总是空白的,也就是说,没有绘制任何内容 非常感谢您的帮助。如果我理解正确,您希望在直方图中绘制生成的W值。为此,需要将它们保存在列表中,从当前脚本执行此操作的最简单方法是在for循环之前添加一行: import random import pylab import matplotlib.pyplot as plt for count in range(0,1000): #for loop used in conjunction with a count and

当我试图绘制它时,尽管生成的图形总是空白的,也就是说,没有绘制任何内容


非常感谢您的帮助。

如果我理解正确,您希望在直方图中绘制生成的W值。为此,需要将它们保存在列表中,从当前脚本执行此操作的最简单方法是在for循环之前添加一行:

import random
import pylab
import matplotlib.pyplot as plt

for count in range(0,1000):

#for loop used in conjunction with a count and range to produce 1000 numbers #

    x=random.gauss(550,30)

    a=pylab.array([50000 ,30000 ,10000 ,0], float)

    s=pylab.array([0 ,100 ,30], float)

    A=pylab.array([((x+(s[0]))/2) ,((x+(s[1]))/2) ,((x+(s[2]))/2)])

    D=pylab.array([(a[0]-a[1]) ,(a[1]-a[2]) ,(a[2]-a[3])])

    T=pylab.array([(D[0]/A[0]) ,(D[1]/A[1]) ,(D[2]/A[2])])

    Tc=pylab.array([(T[0]/20000) ,(T[1]/20000) ,(T[2]/10000)])

    B=pylab.array([(50000) ,(30000) ,(20000) ,(3000) ,(0)], float)

    T3=pylab.array([(Tc[0]*20000) ,(Tc[1]*10000) ,((Tc[1]*10000)+(Tc[2]*7000)),(Tc[2]*3000)])

    S=pylab.array([(2) ,(6) ,(3) ,(0)])

    W=pylab.array([(T3[0]*S[3]) ,(T3[1]*S[2]) ,(T3[2]*S[1]) ,(T3[3]*S[0])])

    W=(4600)+W[0]+W[1]+W[2]+W[3]

    #need to plot W which is generated using the equations stored in the arrays above    based on  #the random values for generated for x.


plt.hist([x], bins=[20])
plt.show()
这将创建一个空数组,然后在计算完W值后,我们将其相加

W_list = []
循环运行后,您就有了一个值列表,可以通过

W=(4600)+W[0]+W[1]+W[2]+W[3]
W_list.append(W)
脚本未运行的原因首先是您试图绘制的值是
[x]
,这只是您在for循环中生成的最后一个随机数的列表。其次,通过将存储箱的数量设置为一个列表
bins=[20]
您使matplotlib的行为异常,这应该是一个单一的整数,如
bins=20


您还应该注意如何命名变量,因为这可能会在将来导致错误。例如,首先将
W
创建为一个数组,然后在下一行执行一个操作并创建一个新变量,也称为
W
,它是一个浮点。在这种情况下,它不会破坏您的代码,但是最好创建新的变量并给它们起一些有意义的名称。

您可以使用此或此中的代码作为示例,在循环中创建数据后绘制直方图。
plt.hist(W_list, bins=20)