【问题标题】:Python histogram plot from loop generated array来自循环生成数组的 Python 直方图
【发布时间】:2014-01-24 22:50:04
【问题描述】:
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()

当我尝试绘制它时,虽然生成的图表始终是空白的,即没有绘制任何内容

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 您可以使用answeranswer 中的代码作为示例,在循环创建数据后绘制直方图。

标签: python arrays matplotlib histogram


【解决方案1】:

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

W_list = []

这会创建一个空数组,然后在计算出我们添加的 W 值之后

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

循环运行后,您将获得一个可以由

绘制的值列表
plt.hist(W_list, bins=20)

您的脚本没有运行的原因首先是您尝试绘制的值是[x],这只是您在 for 循环中生成的最后一个随机数的列表。其次,通过将 bin 的数量设为列表 bins=[20],您会使 matplotlib 行为异常,这应该只是一个像 bins=20 这样的整数。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多