VSCode Jupyter同代码同后端在不同.ipynb文件绘图样式不一致问题
问题成因
该问题的核心原因是两个Jupyter笔记本的内核会话中matplotlib全局配置不一致:
- 其中一个笔记本此前大概率运行过修改matplotlib全局样式的代码(比如调用
plt.style.use()指定过自定义样式、手动修改过matplotlib.rcParams参数、导入过seaborn等会修改默认绘图风格的第三方库),这些修改会在当前内核的生命周期内持续生效,即使重新运行当前的绘图代码也不会自动重置。 - 你提到重启设备后问题仍复现,大概率是第一个笔记本中存在你未注意到的、运行后会修改全局样式的前置代码块,或是你为该笔记本单独配置了内核启动参数,也有可能是VSCode Jupyter扩展为不同笔记本缓存了不同的渲染适配参数。
解决方法(强制统一使用第二张图的绘图样式)
1. 代码层面强制重置样式(最可靠)
在所有绘图代码的最开头添加如下代码,强制将matplotlib配置重置为默认值(也就是第二张图对应的默认风格),完全屏蔽历史修改的影响:
import matplotlib from matplotlib import pyplot as plt # 强制重置所有配置项为出厂默认 matplotlib.rcParams.update(matplotlib.rcParamsDefault) # 显式指定使用默认样式 plt.style.use('default')
如果你需要固定其他自定义样式,将'default'替换为对应的样式名即可。
2. 全局统一所有笔记本的样式
如果希望所有Jupyter笔记本默认都使用同一套样式,可以修改IPython启动配置:
- 打开IPython配置目录,默认路径为
~/.ipython/profile_default/startup/(Windows系统为C:\Users\你的用户名\.ipython\profile_default\startup\) - 新建名为
00-matplotlib-default-style.py的文件,写入以下内容:
import matplotlib.pyplot as plt plt.style.use('default')
后续所有新建或打开的IPython内核都会自动加载该配置,无需每次手动重置样式。
3. VSCode端额外校验
打开VSCode设置,搜索jupyter.experimental.renderer,关闭「Jupyter: 启用实验性绘图渲染器」选项,避免不同笔记本触发不同的渲染逻辑。
内容的提问来源于stack exchange,提问作者Kyle Carow
相关产品推荐
相关产品推荐

