在matplotlib图中设置轴限制[重复]

Posted

技术标签:

【中文标题】在matplotlib图中设置轴限制[重复]【英文标题】:Set axis limits in matplotlib graph [duplicate] 【发布时间】:2014-06-09 16:50:21 【问题描述】:

我有五个时期的数据及其概率,我想用 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()

【问题讨论】:

这段代码有效吗?如果不是,它有什么作用?错误(提供追溯)?意外输出(提供输入以及预期和实际输出)? 是的,它可以运行代码,但我需要 X 轴从 0-1 开始,当我想绘图时它出现另一个数字,我希望 X 轴从 0 - 1 开始。 【参考方案1】:

您需要使用 matplotlib 的 set_xlim method 作为坐标轴。查看他们的一些示例,例如this one,以更好地了解您可以使用该模块做什么。

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

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,因此如果您想对代码进行更改,将来出错的机会就会减少。

【讨论】:

非常感谢您的回复, @user3462393,那么请考虑“接受”答案,这是解决 SO 问题的通常方式。

以上是关于在matplotlib图中设置轴限制[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在matplotlib中将y轴设置为从0到100 [重复]

matplotlib:在堆叠散点图中对齐 y 轴标签

matplotlib - 子图中的 twinx 轴没有 xlabel 和 xticks

共享轴并删除 matplotlib 子图中未使用的轴

使用 Seaborn 和 Matplotlib 在热图和线图的共享子图中对齐 x 轴刻度

如何从 seaborn / matplotlib 图中删除或隐藏 x 轴标签