抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

最近在使用 Jupyter Notebook 时遇到了一个奇怪的问题:更新 jupytergetdist 后,matplotlibplt 绘图突然无法显示。经过排查,发现是 Matplotlib 后端配置被 getdist 覆盖 导致的兼容性问题。

环境配置

  • GetDist:1.6.1
  • Matplotlib:3.3.4
  • Jupyter Notebook:1.0.0

问题复现

1
2
3
4
5
6
7
8
9
10
11
12
13
%load_ext autoreload
%autoreload 2
%matplotlib inline
%config InlineBackend.figure_format = 'retina'

import numpy as np
import matplotlib.pyplot as plt
from getdist import plots,MCSamples

plt.plot([1,2,3], [1,2,3])
plt.show()

# 此时你会发现图片不显示,运行后仅输出类似<matplotlib.lines.Line2D at 0x7f829c3cb940>。

解决办法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
%matplotlib inline
%config InlineBackend.figure_format = 'retina'

# 步骤 1: 先设置原始后端
import matplotlib
original_backend = matplotlib.get_backend()

# 步骤 2: 导入 getdist
from getdist import plots, MCSamples

# 步骤 3: 强制恢复后端
matplotlib.use(original_backend, force=True)

# 步骤 4: 重新激活 inline 模式
%matplotlib inline

# 绘图代码
import matplotlib.pyplot as plt
plt.plot([1,2,3], [1,2,3])
plt.show()

另外还有一个最简洁的方式是调整 %matplotlib inline 的位置,放在 import getdist 之后,在 import matplotlib 之前就可以;或者导入matplotlib之后,plt.switch_backend("module://matplotlib_inline.backend_inline")

参考

评论



Powered by Hexo | Theme keep Volantis

本站总访问量 总访客数 🌎