美文网首页Tools程序员
python之matplotlib中plt.show()不显示图

python之matplotlib中plt.show()不显示图

作者: ctycheer | 来源:发表于2016-05-28 18:47 被阅读24137次

    问题

    最近,我重新安装了ubuntu,使用virtualenv安装了matplotlib。然后,问题来了。当我运行下列代码时,没有图框跳出来。
    <code>
    import matplotlib.pyplot as plt
    plt.show()
    plt.bar(left = 0,height = 1)
    </code>

    原因

    我使用%pylab查看matplotlib后端,发现居然是agg。兄弟姐妹们,agg是不会画图的!
    <code>
    In [4]:%pylab
    Using matplotlib backend: agg
    Populating the interactive namespace from numpy and matplotlib
    </code>

    解决

    1. 安装Tkinter 和 matplotlib

    我的问题在于我原来的python居然没有Tkinter!!
    <code>
    sudo apt-get install tk-dev
    pip uninstall -y matplotlib
    pip --no-cache-dir install -U matplotlib #这是最关键的
    </code>

    2. 设置agg

    其实经过上面的步骤,已经可以画图了
    补充2种设置agg方法

    • 临时的
      <code>
      import matplotlib
      matplotlib.use('TkAgg')
      </code>
      这个命令必须在第一次使用%pylab 或者import matplotlib.pyplot as plt之前使用
      常见的agg有:Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG

    • 永久的
      修改matplotlibrc文件
      matplotlibrc文件的位置在:
      <code>[~/.virtualenvs/myenv]/lib/python2.7/site-packages/matplotlib/mpl-data/</code>
      修改位置:
      <code>
      backend : youragg
      </code>

    至此,matplotlib可以正常工作了。

    相关文章

      网友评论

      • 乌啦啦乌:遇到了同样的问题,没有图形输出
        查询matplotlib.get_backend() 也显示的是‘agg’
        在Mac终端输入 sudo apt-get install tk-dev 后
        显示的是 sudo: apt-get: command not found
        查询后得 apt-get 为ubuntu 命令行指令 没找到在mac 上相应的安装命令行
        请问前辈指导下mac 上相应的命令行是什么?
        ctycheer:@乌啦啦乌 sorry,没有Mac
      • d8afa41f0304:你好,我遇到一个情况是,在ipython的交互界面下,执行一次pyplot.show()函数,弹出图像后,关掉图像,再执行一次,就无法弹出图像了。查了相关的文档并没有提及这一点,不知道前辈能否指导一下?
        bda10707db07:@再见黑暗船 我觉得你在IPYTHON中再将那各行代码各个按顺序运行一遍,这时才又可以显示图像。我一直是这样做的,不知有没有更好的方法
        再见黑暗船:@ctycheer 好, 我再试试,多谢
        ctycheer: @黑暗船 没遇到过,可能是有画图程序异常,重新安装anaconda吧
      • qin7zhen:非常感谢。
      • 辉332255:你好,我是ubuntu环境下的python3.4,在ipython和python命令行粘贴进去代码后可以显示图像,但直接使用python filename 命令运行文件不会弹出图像这是什么原因?
        ctycheer: @辉332255 @辉332255 ipython是父进程,一直运行,画图是子进程,可以显示。Python filename运行完,父进程结束了,所以不显示
      • 42b17f85ce12:临时的可用,谢谢=.=
      • 搞基姑姑:hello,我用的就是anaconda,在spyder里plt.show()后能正常显示图, 但没有弹出那个可以拖动放大缩小的图片操作界面. 而我用IPython的话是可以的,求救
        ctycheer: @搞基姑姑换个agg试试?
      • ctycheer: @LucyGill 需要看一下提示,才能知道什么问题,应该还缺一些文件。如果是入门不久的同学,直接安装anaconda比较方便
      • LucyGill:请问,我用方法1,不管用,而且再安装matplotlib的时候也安装不上了,这是咋回事啊?

      本文标题:python之matplotlib中plt.show()不显示图

      本文链接:https://www.haomeiwen.com/subject/ptnfdttx.html