2017-02-07 93 views
16

我在miniconda虛擬環境中使用Python 3上的matplotlib版本2.0.0。我正在研究一個unix科學計算羣集,我沒有root權限。我通常通過ipython筆記本執行python代碼。如果我做一個基本的命令,例如:Matplotlib找不到基本字體

import matplotlib.pyplot as plt 
plt.scatter([1,5], [1,5]) 

我得到一個錯誤信息:

path_to_miniconda/miniconda3/envs/conda34/lib/python3.4/site- 
packages/matplotlib/font_manager.py:1297: UserWarning: findfont: Font family 
['sans-serif'] not found. Falling back to DejaVu Sans 
(prop.get_family(), self.defaultFamily[fontext])) 

我想能夠使用Times New Roman字體,但即使刪除字體緩存文件後(fontList.py3k.cache),我從這裏找到:

import matplotlib as mpl 
fm = mpl.font_manager 
fm.get_cachedir() 

的命令:

mpl.rcParams['font.family'] = ['serif'] 
mpl.rcParams['font.serif'] = ['Times New Roman'] 

沒有效果,我得到了與上面相同的錯誤。該True Type字體目錄:

path_to_miniconda/miniconda3/ENVS/conda34/lib中/ python3.4 /站點包/ matplotlib/MPL-數據/字體/ TTF/

只中有40種的字體類型:DejaVuSerif,DejaVuSans,STIX,cmb,cmt,cmy

任何想法可能會發生什麼以及如何添加其他字體?謝謝!

+0

我有同樣的問題。感謝您的提示fm.get_cachedir(),我正在擦除錯誤的緩存,現在它工作!謝謝:) –

回答

7

這項工作對我來說::

$ sudo apt-get install msttcorefonts -qq 
+0

Docker用戶需要自動接受許可協議:''''''''' debconf-set-selections''運行apt-get install -y ttf-mscorefonts-installer' –

9

我對一個流浪VM此完全相同的問題運行Ubuntu Xenial 64位。無論我已經安裝了多少字體,matplotlib在「系統」字體名稱「sans-serif」中遇到問題。

  • 停止Jupyter
  • 安裝字體經理:sudo apt install font-manager
  • 清潔matplotlib緩存目錄:rm ~/.cache/matplotlib -fr
  • 重啓Jupyter我的固定它。

沒有關於sans-serif的更多錯誤消息。