最近在使用 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")