【问题标题】:matplotlib does not show my drawings although I call pyplot.show()尽管我调用了 pyplot.show(),但 matplotlib 不显示我的绘图
【发布时间】:2011-11-23 23:15:18
【问题描述】:

matplotlib 需要帮助。是的,我没有忘记调用 pyplot.show()。

$ ipython --pylab

import matplotlib.pyplot as p 
p.plot(range(20), range(20))

它返回matplotlib.lines.Line2D at 0xade2b2c 作为输出。

p.show()

什么都不会发生。没有错误信息。没有新窗口。没有。我使用 pip 安装了matplotlib,但没有收到任何错误消息。

详情:

我用过,

  • Ubuntu
  • IPython v0.11
  • Python v2.6.6
  • matplotlib v1.0.1

【问题讨论】:

    标签: python matplotlib tech-chat-ml


    【解决方案1】:

    如果您是 ruby​​ 的 nube,请不要忘记括号 - show()

    【讨论】:

      【解决方案2】:

      我发现我需要window = Tk(),然后是window.mainloop()

      【讨论】:

      • 你能补充一点解释吗?您的解决方案与其他解决方案有何不同?
      【解决方案3】:

      运行你的代码后包括:

      import pylab as p
      p.show()
      

      【讨论】:

        【解决方案4】:

        对我来说,如果我只是在 macOS 上的 ~/.matplotlib 下创建一个 empty matplotlibrc 文件,就会出现问题。在其中添加“后端:macosx”可以解决问题。

        我认为这是一个错误:如果我的matplotlibrc 中没有指定backend,它应该采用默认值。

        【讨论】:

          【解决方案5】:

          类似于@Rikki,我通过将matplotlib 升级为pip install matplotlib --upgrade 解决了这个问题。如果您无法升级,卸载并重新安装可能会起作用。

          pip uninstall matplotlib
          pip install matplotlib
          

          【讨论】:

            【解决方案6】:

            只需输入:

            plt.ion()

            23:30 见https://www.youtube.com/watch?v=1zmV8lZsHF4

            plt 因为我的导入而被使用:import matplotlib.pyplot as plt

            我在带有 iTerm2 的 mac 上使用 python2.7。

            【讨论】:

              【解决方案7】:

              解决我的问题的方法是在顶部的 ipython notebook 中使用以下两行

              %matplotib inline
              %pylab inline
              

              它奏效了。我正在使用 Ubuntu16.04 和 ipython-5.1

              【讨论】:

              • 完成 - 虽然 this blogpost 抨击 pylab,但您会明白为什么添加 %pylab inline 会使其工作。
              【解决方案8】:

              在导入pylab之前添加以下两行似乎对我有用

              import matplotlib
              matplotlib.use("gtk")
              
              import sys
              import pylab
              import numpy as np
              

              【讨论】:

                【解决方案9】:

                我必须从源代码安装 matplotlib 才能使其工作。关键说明(来自http://www.pyimagesearch.com/2015/08/24/resolved-matplotlib-figures-not-showing-up-or-displaying/)是:

                $ workon plotting
                $ pip uninstall matplotlib
                $ git clone https://github.com/matplotlib/matplotlib.git
                $ cd matplotlib
                $ python setup.py install
                

                正如@unutbu 所说,通过更改后端,我遇到了更多问题,所有不同的后端都无法正常工作。

                【讨论】:

                • 辛苦了,只使用了 git clone 和 python 设置步骤,但是当我用 plt.show() 运行它时没有问题。
                • 我在尝试运行 python setup.py install 时收到编译器错误:/ 我希望我能看到翻转窗口!
                【解决方案10】:

                %matplotlib 内联

                对于使用笔记本的我来说,在情节开始之前添加上面的行。

                【讨论】:

                • 如@Bhanu Pratap Singh 所述,我需要在笔记本上使用%pylab inline
                • 一个 Jupyter 笔记本?
                【解决方案11】:

                请务必启用此启动脚本: (首选项 > 控制台 > 高级选项)

                /usr/lib/python2.7/dist-packages/spyderlib/scientific_startup.py
                

                如果启用标准 PYTHONSTARTUP,您将不会有交互式绘图

                【讨论】:

                  【解决方案12】:

                  对于 Ubuntu 12.04:

                  sudo apt-get install python-qt4
                  virtualenv .env --no-site-packages
                  source .env/bin/activate
                  easy_install -U distribute
                  ln -s /usr/lib/python2.7/dist-packages/PyQt4 .
                  ln -s /usr/lib/python2.7/dist-packages/sip.so .
                  pip install matplotlib
                  

                  【讨论】:

                    【解决方案13】:

                    如果我在~/.matplotlib/matplotlibrc 中将我的后端设置为template, 那么我可以重现你的症状:

                    ~/.matplotlib/matplotlibrc:

                    # backend      : GtkAgg
                    backend      : template
                    

                    请注意,文件matplotlibrc 可能不在目录~/.matplotlib/ 中。在这种情况下,以下代码显示了它的位置:

                    >>> import matplotlib
                    >>> matplotlib.matplotlib_fname()
                    

                    In [1]: import matplotlib.pyplot as p
                    
                    In [2]: p.plot(range(20),range(20))
                    Out[2]: [<matplotlib.lines.Line2D object at 0xa64932c>]
                    
                    In [3]: p.show()
                    

                    如果您编辑~/.matplotlib/matplotlibrc 并将后端更改为GtkAgg 之类的内容,您应该会看到一个绘图。您可以列出您机器上所有可用的后端

                    import matplotlib.rcsetup as rcsetup
                    print(rcsetup.all_backends)
                    

                    它应该返回一个类似的列表:

                    ['GTK', 'GTKAgg', 'GTKCairo', 'FltkAgg', 'MacOSX', 'QtAgg', 'Qt4Agg',
                    'TkAgg', 'WX', 'WXAgg', 'CocoaAgg', 'agg', 'cairo', 'emf', 'gdk', 'pdf',
                    'ps', 'svg', 'template']
                    

                    参考:

                    【讨论】:

                    • 我试过了,但我得到了一个类似的错误:ImportError: No module named _backend_gdk
                    • 很抱歉有很多评论。有用。我尝试了 Qt4Agg 并成功了。谢谢 :).. 最后一件事,我在哪里可以找到默认的 matplotlibrc 或者有什么方法可以创建它?
                    • 抱歉不整洁。我想我found
                    • 更多关于 matplotlibrc 的信息在matplotlib.sourceforge.net/users/customizing.html
                    • 这个答案很旧,配置现在应该在~/.config/matplotlib/matplotlibrc 中(至少对于python 3)。我刚刚遇到了一个相关的问题,我认为这是在 python 2.7 中使用 matplotlib 引起的,它创建了一个~/.matplotlib/ 目录,并阻止了 python 3 读取~/.config/matplotlib/ 中的配置。删除 ~/.matplotlib/ 为我解决了这个问题。
                    【解决方案14】:

                    我在 Ubuntu 12.04 上遇到了完全相同的问题,因为我安装了 matplotlib(在 virtualenv 中)使用

                    pip install matplotlib
                    

                    长话短说,我的建议是:不要尝试使用 pip 或手动安装 matplotlib;让真正的包管理器(例如 apt-get / synaptic)为您安装它及其所有依赖项。

                    不幸的是,matplotlib 的后端(实际渲染绘图的替代方法)具有 pip 无法处理的各种依赖关系。更糟糕的是,它默默地失败了;也就是说,pip install matplotlib 似乎成功安装了 matplotlib。但是当你尝试使用它时(例如pyplot.show()),不会出现绘图窗口。我尝试了网上人们建议的所有不同后端(Qt4Agg、GTK 等),但它们都失败了(即当我尝试导入 matplotlib.pyplot 时,我得到ImportError,因为它试图导入一些缺少的依赖项)。然后我研究了如何安装这些依赖项,但这只是让我想放弃使用 pip(在 virtualenv 中)作为任何具有非 Python 包依赖项的包的可行安装解决方案。

                    整个体验让我爬回 apt-get / synaptic(即 Ubuntu 包管理器)安装 matplotlib 之类的软件。那工作得很好。当然,这意味着你只能安装到你的系统目录中,没有 virtualenv 优点,而且你被 Ubuntu 分发的版本卡住了,这可能远远落后于当前版本......

                    【讨论】:

                    • 你试过--system-site-packages选项吗?
                    • %Christopher Lee 数字没有显示没有任何错误/其他投诉的问题是因为pip install 时的默认后端是agg。我不知道为什么,但你可以根据 unutbu 的回答来改变它。 pip 具有安装最新版本的主要优势 - apt 安装过时版本。有时会有您想要/需要的错误修复/新功能。
                    • 同意@drevicko pip 通常是安装python 包的好方法。
                    • 刚刚停用virtualenv 工作!而且我能够从源系统范围内(在 Ubuntu 上)安装 matplotlib 1.4,但不能在 virtualenv 下安装。
                    • 对于我们这些卡在无法使用 apt-get 的 Windows 工作机器上的人来说,有什么解决方案?
                    【解决方案15】:

                    供日后参考,

                    我也遇到过同样的问题——在 ipython 下没有显示 pylab。通过更改 ipython 的配置文件 {ipython_config.py} 解决了该问题。在配置文件中

                    c.InteractiveShellApp.pylab = 'auto'

                    我将“auto”更改为“qt”,现在我看到了图表

                    【讨论】:

                    • 或使用“ipython --pylab=qt”
                    • 这会起作用,但这只是部分解决方案:如果您的默认后端是agg,我不认为%pylab inline 会起作用,当您直接运行脚本时也不会显示图表,即:python myscript.py。 unutbu 的答案应该可以解决所有问题。
                    猜你喜欢
                    • 1970-01-01
                    • 2020-11-19
                    • 2018-07-22
                    • 2020-01-11
                    • 2014-06-21
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-08-07
                    • 1970-01-01
                    相关资源
                    最近更新 更多