最近在使用 Jupyter Notebook 时遇到了一个奇怪的问题:更新 jupyter 和 getdist 后,matplotlib 的 plt 绘图突然无法显示。经过排查,发现是 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()
|
解决办法
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'
import matplotlib original_backend = matplotlib.get_backend()
from getdist import plots, MCSamples
matplotlib.use(original_backend, force=True)
%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")