Python 在matplotlib图形中设置轴限制

Python 在matplotlib图形中设置轴限制,python,matplotlib,Python,Matplotlib,我有一个五周期的数据和它们的概率,我想用20000次来模拟它 对于泊松分布,我希望x轴从0-1开始,我尝试过,但我在这里储存了我的代码: 还有什么方法比我做的更容易编码吗 import numpy import matplotlib.pyplot import pylab import numpy as np from pylab import * data = [] inventory = 0 for j in range(4000): totalOrder= 0 tot

我有一个五周期的数据和它们的概率,我想用20000次来模拟它 对于泊松分布,我希望x轴从0-1开始,我尝试过,但我在这里储存了我的代码: 还有什么方法比我做的更容易编码吗

import numpy
import matplotlib.pyplot
import pylab
import numpy as np
from pylab import *


data = []
inventory = 0

for j in range(4000):
    totalOrder= 0
    totalProduction = 0
    for i in range (5):

        # calculate order
        mean = 105
        order = np.random.gamma(mean, 20000)
        totalOrder = totalOrder+order


        # calculate production
        production = numpy.random.choice([80, 100, 130, 150], p = [0.2, 0.50 ,0.20, 0.1])

        totalProduction = totalProduction + production

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

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

    # append FR to dataset
    data.append(fr)


grid(True)
xlabel('Fill Rate')
ylabel('Density')
title('Simulate the system for 20000 week')
matplotlib.pyplot.hist(data, normed = True)
pylab.show()
导入numpy
导入matplotlib.pyplot
进口派拉布
将numpy作为np导入
从派拉布进口*
数据=[]
存货=0
对于范围(4000)内的j:
totalOrder=0
总产量=0
对于范围(5)中的i:
#计算订单
平均值=105
顺序=np.随机伽马(平均值,20000)
totalOrder=totalOrder+订单
#计算产量
生产=numpy.random.choice([80100130150],p=[0.2,0.50,0.20,0.1])
总产量=总产量+产量
#计算新存货
库存=库存+生产-订单
如果库存<0:
存货=0
#计算最近5个订单的填充率
fr=浮动(总生产)/浮动(总订单)
如果fr>1:
fr=1
#将FR追加到数据集
数据追加(fr)
网格(真)
xlabel(“填充率”)
ylabel('密度')
标题(“模拟系统20000周”)
matplotlib.pyplot.hist(数据,normed=True)
pylab.show()

您需要将matplotlib用于轴。例如,请查看他们的一些示例,以便更好地理解您可以使用该模块做什么

对于您的代码,您需要添加:

ax = plt.gca()
ax.set_xlim(0,1)
至于一些优化,我看到您正在不同别名下添加相同的模块(例如,您导入了numpy及其别名np,这也是由pylab导入的)。它告诉我你还没有太多的语言经验。随着您的不断学习,您最终会将所有这些导入减少到只有几个,例如

import numpy as np
import matplotlib.pyplot as plt
您将调用属于这些名称空间的正确函数(例如,
plt.show()
,而不是
pylab.show
——pylab只不过是numpy和matplotlib包上的一层薄纱

您还可以对代码进行一些优化(例如,对循环进行矢量化),但考虑到您当前的级别,我认为这会使代码过于复杂。此外,循环确实会使您的操作更加明确

也许只有一个提示:在python中,当您想要更新一个数值变量(int、float等)时,您可以执行以下操作:

inventory += production - order

它可以避免您再次键入
inventory
,因此,如果您想更改代码,将来发生错误的可能性更小。

此代码是否有效?如果无效,它会做什么?错误(提供回溯)?意外输出(提供输入以及预期和实际输出)是的,它工作的代码,但我需要x轴开始从0-1,它出现了另一个数字,当我想阴谋,我想X轴开始从0 - 1。可能的副本感谢你这么多的回应,@ USER 34 623 92,然后请考虑“接受”的答案,这是通常的方式问题,所以得到解决。