【问题标题】:Why is plt.xlim() returning (0,1) from a blank plot?为什么 plt.xlim() 从空白图中返回 (0,1)?
【发布时间】:2018-07-16 02:30:07
【问题描述】:

我可能在这里犯了一个愚蠢的错误,但我试图从我绘制的直方图中获取“xlim”值。

data = np.random.normal(loc=10.0, scale=2.5, size=500)

plt.hist(data, bins=25, color='b')

x_min, x_max = plt.xlim()

print(x_min)
print(x_max)

然而,当我编译上述行时,它返回给我 'x_min= 0' 和 'x_max= 1.0' 和一个空白图(其中 x 轴范围从 0 到 1)

谁能告诉我怎么了?

【问题讨论】:

  • 我无法重现此内容。你确定这是你用来产生问题的所有代码吗?如果您不小心使用plt.figure() after plt.hist()? 创建了一个空图形,则可能会发生这种情况
  • 您似乎在使用 IPython 或 Juypter Notebook。此类信息非常重要,不应被排除在问题之外。
  • 对不起,我会记住的!

标签: python matplotlib


【解决方案1】:

使用相同的脚本或 IPython 单元

如果您在笔记本单元的同一脚本中运行问题中的代码,它将产生所需的输出,即打印直方图的限制。

但是,如果您真的想从不同的单元格运行它,您会遇到 pyplot 忘记其在后续单元格中的内容的问题。在这种情况下,您有两个选择。

使用面向对象的方法

直接通过相应的方法 (ax.get_xlim) 处理对象,在本例中为轴。

In[1]: fig, ax = plt.subplots()
       ax.hist(data, bins=25, color='b');

In[2]: x_min, x_max = ax.get_xlim()

In[3]: print(x_min)
       print(x_max)

配置 IPython 不关闭图形

您可以使用 IPython 配置告诉后端不要关闭 pyplot 图形,

%config InlineBackend.close_figures=False # keep figures open in pyplot

在这种情况下,问题中的代码甚至可以在不同的单元格中工作。

这里也有人问过类似的问题:How to overlay plots from different cells?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2020-05-27
    • 2018-09-18
    • 2021-01-19
    • 2013-12-07
    • 1970-01-01
    相关资源
    最近更新 更多