2017-02-07 2 views
16

Je travaille sur un cluster de calcul scientifique Unix où je n'ai pas de privilèges root. J'exécute généralement du code python à travers un cahier ipython. Si je fais une commande de base telles que:Matplotlib ne trouve pas les polices de base

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

Je reçois un message d'erreur:

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])) 

Je voudrais pouvoir utiliser une police Times New Roman, mais même après la suppression du fichier de cache police (fontList.py3k.cache) que je trouve d'ici:

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

Les commandes:

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

n'ont aucun effet, j'obtiens la même erreur que ci-dessus. Le répertoire vrai des polices de type:

path_to_miniconda/miniconda3/envs/conda34/lib/python3.4/site-packages/matplotlib/mpl-data/polices/TTF/

ne dispose de 40 polices qu'il contient de la tapez: DejaVuSerif, DejaVuSans, STIX, cmb, cmt, cmy

Une idée de ce qui pourrait se passer et comment je peux ajouter des polices supplémentaires? Merci!

+0

J'ai eu le même problème. Merci pour ton conseil fm.get_cachedir(), j'effaçais le mauvais cache et maintenant ça marche! Merci :) –

Répondre

7

Ce travail pour moi ::

$ sudo apt-get install msttcorefonts -qq 
+0

Les utilisateurs de Docker devront accepter le contrat de licence automatiquement: 'RUN echo ttf-mscorefonts-installateur msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections' RUN apt-get install -y ttf-mscorefonts-installateur' –

9

J'ai eu ce même problème sur une machine virtuelle en cours d'exécution Vagrant Ubuntu Xenial 64 bits. Peu importe le nombre de polices que j'avais déjà installées, matplotlib avait un problème avec le nom de police "system" "sans-serif". Je l'ai fixé par:

  • Arrêt Jupyter
  • Installation-gestionnaire de la police: sudo apt install font-manager
  • Nettoyage du répertoire du cache matplotlib: rm ~/.cache/matplotlib -fr
  • Jupyter Redémarrage.

Plus de messages d'erreur à propos de sans-serif.