如何在Pycharm中将matplotlib的默认后端从'QtAgg'更改为'Qt5Agg'?

5

Qt5Agg是使用mayavi 3D可视化包所必需的。我已经在一个单独复制的conda环境中使用pip安装了PyQt5mayavi。然后默认后端从TkAgg更改为QtAgg。这有点奇怪,因为在另一台计算机上的早期安装中,默认值直接更改为Qt5Agg。我总是使用以下命令从python控制台检查后端:

import matplotlib 
matplotlib.get_backend()

即使在后端是“QtAgg”的情况下,我仍然可以在终端中使用mayavi而没有任何问题,但是在Pycharm中不行。在这里,我会得到一个无响应的空窗口(如下图所示):

非响应窗口的图像

我通过在plt调用之前显式使用Qt5Agg而不是QtAgg来解决了这个问题:

import matplotlib
matplotlib.use('Qt5Agg')
import matplotlib.pyplot as plt

但我希望有比在每个脚本中使用上述方法更好的方式。正如我之前提到的,我已经安装了mayavi,并在另一台PC的Pycharm中成功地使用了它,在那里默认的后端是“Qt5Agg”,因此不需要显式更改后端。

我是否忽略了什么明显的事情?请问是否有一种方法可以在使用pip安装PyQt5后将matplotlib的默认后端从QtAgg更改为Qt5Agg

提前感谢!


你可以编辑matplotlibrc文件。https://matplotlib.org/stable/tutorials/introductory/customizing.html#customizing-with-matplotlibrc-files - Paul H
非常感谢@PaulH。我能够编辑matplotlibrc文件并更改默认后端。在最新的matplotlib更新中,Qt5Agg已被弃用,并且由于mayavi仍在使用它,因此存在问题。 - Pratik Dash
@PratikDash 如果您已经解决了问题,可以添加自己的答案来说明如何解决。这样其他人也可以从这个问题中受益。 - mx0
感谢@mx0的评论。我现在已经回答了这个问题,详细说明了解决我的问题的确切步骤。 - Pratik Dash
1个回答

7
由于 @PaulH 的评论,我得以解决问题。受 @mx0 的建议影响,我现在将以下修复措施明确说明,以便其他人也可以从中受益。
在特定的conda环境中,如果安装了 matplotlib 包,则会有一个存储“matplotlibrc”文件的位置,该文件定义每次从该conda环境导入 matplotlib 时默认的后端。可以使用以下命令找到此 'matplotlibrc' 的位置:
import matplotlib
matplotlib.matplotlib_fname()

如果以上命令存在任何弃用问题,请查看以下链接:https://matplotlib.org/stable/tutorials/introductory/customizing.html#customizing-with-matplotlibrc-files
一旦知道“matplotlibrc”文件的位置,只需打开该文件并取消注释其中一行即可。只需要更改后端:
##backend: Agg

致:

backend: Qt5Agg

就是这样。对于与mayavi 3D可视化包有关的所有情况,PyCharm中的所有绘图窗口问题都将得到解决。对于任何其他需要特定后端的用途,您也可以将默认值设置为所需的任何其他后端。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接