求助:matplotlib.pyplot.show()在Python正常但Jupyter控制台无法显示图形
解决Jupyter控制台中Matplotlib图形无法显示的问题
我之前也碰到过一模一样的情况,太懂这种明明配置文件路径对但后端就是不生效的抓狂感了!
问题根源
Jupyter的ipykernel会在启动时自动注入自己的后端配置,直接覆盖掉你matplotlibrc里的设置——这就是为啥你查matplotlib.rcParams['backend']总是返回module://ipykernel.pylab.backend_inline的原因,它的优先级比全局配置文件高得多。
快速解决办法
你可以在Jupyter的代码里手动指定后端,或者修改Jupyter的默认配置来彻底解决:
方法1:临时切换到交互式后端
在代码开头加上魔法命令,强制使用交互式后端(比如TkAgg、QtAgg,选你系统支持的类型即可):%matplotlib tk # 也可以换成qt、gtk3等 import matplotlib.pyplot as plt之后调用
plt.show()就能弹出独立窗口显示图形了,这个方法只对当前Notebook会话生效。方法2:修改Jupyter默认配置(永久生效)
如果不想每次打开Notebook都手动加魔法命令,可以修改Jupyter的全局配置:- 先在终端运行以下命令生成配置文件:
jupyter notebook --generate-config - 找到生成的
jupyter_notebook_config.py文件并打开,定位到这一行:# c.InteractiveShellApp.matplotlib = 'inline' - 去掉开头的注释符号
#,把'inline'改成你想要的后端(比如'tk'),保存后重启Jupyter即可生效。
- 先在终端运行以下命令生成配置文件:
验证配置是否成功
修改完成后,在Jupyter单元格中运行以下代码确认后端是否切换成功:
import matplotlib print(matplotlib.rcParams['backend'])
如果返回你指定的后端(比如TkAgg),就说明配置生效了,再尝试调用plt.show()应该就能正常显示图形啦。
内容的提问来源于stack exchange,提问作者Aniket Deshpande
相关产品推荐
相关产品推荐

