• 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

  • 相关阅读:
    srs webrtc推拉流环境搭建(公网)
    【安全】漏洞挖掘之王的传奇人生
    Android Studio 导出 jar
    计算机系统(20)----- 信号量机制
    如何让vivado仿真结果显示具体数值
    Linux进程通信——IPC、管道、FIFO的引入
    【ARM入门】ARM、SOC、ARM授权 概念篇
    流程图拖拽视觉编程-流程编辑器
    【完美云曦篇】新预告,云曦遭魔改被抓,石昊首秀九天劫光,反杀战王
    从JS角度直观理解递归的本质
  • 原文地址:https://blog.csdn.net/Julse/article/details/127093899