Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在0,1之间绘制y?_Python_Numpy - Fatal编程技术网

Python 如何在0,1之间绘制y?

Python 如何在0,1之间绘制y?,python,numpy,Python,Numpy,我正在尝试在(0,1)或(0和1)之间绘制y 我尝试了很多东西,但是我的直方图不好,如果你认为有 你能帮我个忙吗?我用了matplotlib.pyplot.ylim(0.0,1),但不起作用 代码是 import numpy import numpy as np import matplotlib.pyplot import pylab data = [] for j in range(40000): totalX= 0 totalY = 0 for i in ran

我正在尝试在(0,1)或(0和1)之间绘制y 我尝试了很多东西,但是我的直方图不好,如果你认为有 你能帮我个忙吗?我用了matplotlib.pyplot.ylim(0.0,1),但不起作用

代码是

import numpy
import numpy as np
import matplotlib.pyplot
import pylab
data = []


for j in range(40000):
    totalX= 0
    totalY = 0
    for i in range (5):

        # calculate order
        X = numpy.random.gamma(5.0)
        totalX = totalX+ X


        # calculate production
        Y = min(7.26, X)

        totalY = totalY + Y

        # calcculate new inventory
        #inventory = inventory + production - order
       # if inventory < 0:
         #   inventory = 0

    # calculate fill rate for last 5 orders
    fr = float(totalY) / float(totalX)
    if fr > 1:
        fr = 1

    # append FR to dataset
    data.append(fr)




matplotlib.pyplot.hist(data, normed = True, bins =30, align = 'right')
#matplotlib.pyplot.xticks(([.75, .80, .85, .90, .95, 1]))
matplotlib.pyplot.xlim(.70, 1.009)

#matplotlib.pyplot.minorticks_on()
matplotlib.pyplot.tick_params(axis='both', length = 10)
matplotlib.pyplot.axvline(numpy.mean(data), color = 'r')
matplotlib.pyplot.xlabel('Fill Rate')
matplotlib.pyplot.ylabel('Probability')
pylab.show()
导入numpy
将numpy作为np导入
导入matplotlib.pyplot
进口派拉布
数据=[]
对于范围(40000)内的j:
totalX=0
总计=0
对于范围(5)中的i:
#计算订单
X=numpy.random.gamma(5.0)
totalX=totalX+X
#计算产量
Y=最小值(7.26,X)
totalY=totalY+Y
#计算新存货
#库存=库存+生产-订单
#如果库存<0:
#存货=0
#计算最近5个订单的填充率
fr=浮动(总计)/浮动(总计X)
如果fr>1:
fr=1
#将FR追加到数据集
数据追加(fr)
matplotlib.pyplot.hist(数据,normed=True,bin=30,align=right)
#matplotlib.pyplot.xticks(([75,80,85,90,95,1]))
matplotlib.pyplot.xlim(.70,1.009)
#matplotlib.pyplot.minorticks_on()
matplotlib.pyplot.tick_参数(axis='both',length=10)
matplotlib.pyplot.axvline(numpy.mean(数据),颜色='r')
matplotlib.pyplot.xlabel('填充率')
matplotlib.pyplot.ylabel('概率')
pylab.show()
当您说“我试图在(0,1)或(0和1之间)绘制y”时,您的意思是希望条的总和为1

在这种情况下,你应该考虑替换

    matplotlib.pyplot.hist(data, normed = True, bins =30, align = 'right')

如图所示:


注:Normed=True允许将条上的积分设为1(而不是条的总和)

将y轴上的柱状图剪切为(0,1)是没有意义的,因为柱状图统计事件,通常在许多箱子中会有多个事件。听起来你想缩放直方图,将事件数除以事件总数。这取决于你是否需要一个bin频率的估计值,或者基本上是其积分的累积分布函数。正如我所建议的,将柱状图除以1/#事件将给出垃圾箱的频率,
pandas.Series.quantile
构成一个很好的反向CDF。我不知道如何欣赏你,现在我可以看到,我理解了,我希望你能做到最好。
    weights = np.ones_like(data)/len(data)
    matplotlib.pyplot.hist(data, weights=weights)