由于我习惯使用 WSL 写 python,因此所有论文的代码全部跑在ubuntu22.04

在使用venv的时候,**matplotlib**经常会报错后端的问题。最常见的问题就是:

UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown

在经过长时间摸索,总结发现。常用的 backend 如下:

  1. TkAgg:
    • 使用 Tkinter 库进行图形渲染。
    • 适用于简单的图形界面应用。
  2. Qt5Agg:
    • 使用 PyQt 或 PySide 库进行图形渲染。
    • 适用于需要更现代化 GUI 的应用。
  3. Agg:
    • 不涉及图形用户界面,图形渲染到文件或内存。
    • 适用于生成图形并将其保存为图像文件。
  4. GTK3Agg:
    • 使用 GTK3 库进行图形渲染。
    • 适用于 Linux 系统,并且需要 GTK3 库的支持。

还有一些其他的后端这里不再赘述。

个人感觉GTK3Agg在 Ubuntu 上的 GUI 更好看一些,而Qt5Agg等QT系的后端大都是直角,不符合个人审美,但是功能都一样不影响正常使用

这里在写一个安装Qt5Agg的坑。pip install安装后,plt.show()报错如下:

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
 
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
 
Aborted

**这个错误通常出现在使用 Qt 库的应用程序中,它表示 Qt 无法加载名为 “xcb” 的平台插件。**这通常是由于缺少相应的库或者配置问题引起的。

以下是一些可能的解决方法:

  1. **安装 xcb 相关库:**确保你的系统上已经安装了 xcb 相关的库。具体的命令可能因系统而异。例如,在基于 Debian 的系统上,你可以运行:
bashCopy code
sudo apt-get install libxcb-xinerama0
  1. **设置环境变量:**尝试在你的应用程序运行之前设置 QT_DEBUG_PLUGINS 环境变量,以获取更多关于插件加载失败的详细信息。在终端中运行:
bashCopy code
export QT_DEBUG_PLUGINS=1
./your_application

查看输出以了解更多关于加载 xcb 插件失败的信息。

  1. **重新安装 Qt 库:**尝试重新安装 Qt 库以确保相关的平台插件被正确安装。具体的步骤可能因你的系统和 Qt 版本而异。在一些系统上,你可以运行:
bashCopy code
sudo apt-get install --reinstall libqt5core5a libqt5gui5 libqt5widgets5

对于其他系统,你可能需要使用相应的包管理器来重新安装 Qt 库。

  1. **检查 LD_LIBRARY_PATH:**确保你的 LD_LIBRARY_PATH 环境变量包含了 Qt 库的路径。例如:
bashCopy code
export LD_LIBRARY_PATH=/path/to/your/qt/lib:$LD_LIBRARY_PATH

其中 **/path/to/your/qt/lib** 是你的 Qt 库的路径。

如果你是在使用虚拟环境或容器中运行应用程序,确保环境中的 Qt 库路径正确。这些解决方案可能需要根据你的具体环境和应用程序的情况进行调整。