• pycharm 无法显示matplotlib的绘图 - 查询显示绘图的backend - Agg -module://backend_interagg


    官方示例图
    https://www.osgeo.cn/matplotlib/gallery/index.html

    import matplotlib as mpl
    mpl.use(‘module://matplotlib_inline.backend_inline’) # jupyter notebook
    mlp.use(‘Agg’) # 切换backend,常用于服务器上生成图片,无法直接显示图片
    mpl.use(‘module://backend_interagg’) # pycharm 中生成图片

    问题描述

    使用pycharm写代码,导入的包多了之后,命令 plt.show() 不工作

    可能的原因

    其他包设置了matplotlib 的backend 为 ‘Agg’ 模式,导致图片只能保存,不会显示
    如其他的包设置了‘Agg’ 为backend

    mlp.use('Agg') # 切换backend,常用于服务器上生成图片,无法直接显示图片
    

    解决办法

    参考博文:“matplotlib.use(‘agg‘)“语句的作用机理 中的解决办法

    先查询当前的backend

    import matplotlib
    matplotlib.get_backend()
    '
    运行

    发现输出是‘Agg’,需要切换backend

    import matplotlib as mpl
    mpl.use('Qt5Agg')
    import matplotlib.pyplot as plt
    '
    运行

    但是设置为“Qt5Agg”报错

    ImportError: Cannot load backend 'Qt5Agg' which requires the 'qt5' interactive framework, as 'headless' is currently running
    

    成功解决

    结合前面的尝试发现,pycharm中plt无法显示图片,是因为导入的其他包修改了绘图的backend,因此需要新建一个简单的python文件(以减少导入的其他包改变backend)查询默认的backend。然后在目标代码中将backend修改成查询到的backend即可。

    • 新建.py 文件查询backend
    import matplotlib
    matplotlib.get_backend() # 输出: 'module://backend_interagg'
    '
    运行
    • 在目标代码绘图中设置backend
    import matplotlib as mpl
    mpl.use('module://backend_interagg') # 设置为查询到的backend
    import matplotlib.pyplot as plt 
    '
    运行

    然后绘图
    在这里插入图片描述

    import matplotlib.pyplot as plt
    x = list(range(15))
    y1 = list(map(lambda e: 6-e,x[:5]))
    y2 = list(map(lambda e: e,x[5:]))
    plt.plot(x,y1+y2)
    plt.show()
    '
    运行

    总结

    1. 缺失一些支持图形化界面的包的时候(如服务器上运行),如果只想将图片输出到文件,用Agg就行

      mlp.use('Agg') # 切换backend,常用于服务器上生成图片,无法直接显示图片
      
    2. 如果想在代码运行的时候,显示图片,则要根据系统的实际情况设置backend。在没有导入其他包的情况下查询到的backend一般就是可以显示图像的。

      mpl.use('module://backend_interagg')
      

    jupyter中的backend

    module://matplotlib_inline.backend_inline
    

    pycharm中交互式界面中的backend

    module://backend_interagg
    

    其他推荐

    官网对于断轴的介绍
    https://www.osgeo.cn/matplotlib/gallery/subplots_axes_and_figures/broken_axis.html

  • 相关阅读:
    Spring中IOC容器的基本配置使用
    python面试题——设计模式之观察者模式
    1-前端基本知识-CSS
    【赠书第6期】MATLAB科学计算从入门到精通
    Python PyInstaller安装和使用教程(详解版)
    71.【Java.哈希表(散列表)】
    Windows高效开发环境配置(一)
    ​“FTX 传奇曾经大佬 SBF 的审判:密友出庭指控,陪审团选择延长,听证会揭示 “
    大数据之LibrA数据库系统告警处理(ALM-12027 主机PID使用率超过阈值)
    软件测试(五)自动化 selenium
  • 原文地址:https://blog.csdn.net/Julse/article/details/127093899