【问题标题】:Python Saving PNG in Terminal vs IPython NotebookPython在终端中保存PNG与IPython Notebook
【发布时间】:2016-03-28 20:49:42
【问题描述】:

我正在编写一个基本的 Python 模块,其中包含一个绘制来自 Pandas DataFrame 的一些数据的函数。问题是我希望用户从 both 交互式 shell IPython 笔记本中调用此函数。不幸的是,我们的交互式 shell 环境没有任何有效的 DISPLAY 选项可供 matplotlib 使用,所以我希望我的函数(或完整模块)的行为根据它加载到的环境略有不同。 (例如,默认在 IPython 中显示绘图而不保存,在 shell 中保存绘图而不显示)。

This question 给了我一个部分答案,因为我可以明确告诉用户在他们导入我的模块之前写matplotlib.use('Agg'),但肯定有更自动化的后端方式来处理这个问题?

【问题讨论】:

    标签: python python-3.x matplotlib


    【解决方案1】:

    您可以尝试检查您是否遇到这种情况(空的$DISPLAY)和默认用户到Agg 后端,而不是要求他们这样做。

    def configure_matplotlib():
       import os
       if 'DISPLAY' not in os.environ:
          if matplotlib.get_backend() != 'Agg':
              matplotlib.use('Agg')
    
    
    import matplotlib
    configure_matplotlib()
    import matplotlib.pyplot as plt
    ...
    

    现在matplotlib.use 在导入pyplot 后无效,但如果您的用户已经这样做了,他们可能仍然有一个有效的配置。

    【讨论】:

      猜你喜欢
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      相关资源
      最近更新 更多