modifier la police par défaut de matplotlib

j'essaie de changer la police par défaut de matplotlib en Helvetica Neue. Sur mon Mac avec EPD / Canopy tout a bien fonctionné il y a quelque temps.

Essayer de faire la même chose sur ubuntu maintenant et il ne fonctionne pas.

C'est ce que j'ai fait:

  1. Installé Helvetica Neue

    $ fc-match 'Helvetica Neue':Light
    HelveticaNeue-Light.otf: "Helvetica Neue" "細體"
    
  2. à convertir odt/dfont en ttf:

    fondu -show HelveticaNeue.dfont
    
  3. a changé matplotlibrc en

    $ cat ~/.config/matplotlib/matplotlibrc
    ...
    font.family: Helvetica Neue
    

    j'ai aussi essayé avec:

    font.family: sans-serif
    font.sans-serif: Helvetica Neue
    
  4. j'ai enlevé le cache de police

    rm ~/.config/matplotlib/fontList.cache
    

mais aucune de ces mesures ne fonctionne pour moi.

    $ python -c 'from  matplotlib import pyplot as plt; plt.plot(1); plt.savefig("/tmp/test.png")'
    /usr/local/lib/python2.7/dist-packages/matplotlib-1.3.0-py2.7-linux-x86_64.egg/matplotlib/font_manager.py:1236: 
    UserWarning: findfont: Font family ['Helvetica Neue'] not found. Falling back to Bitstream Vera Sans

(prop.get_family (), self.defaultFamily [fontext]))

Version 1.3.0

    $ python -c 'import matplotlib; print  matplotlib.__version__'
    1.3.0

j'ai aussi essayé de déplacer les polices de caractères ~/.config/matplotlib/fonts/ttf mais ça n'a pas marché.


EDIT: Comme suggéré j'ai essayé sélectionner une police spécifique pour un texte spécifique.

import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager

path = '/home/<myusername>/.fonts/HelveticaNeue.ttf'

prop = font_manager.FontProperties(fname=path)
prop.set_weight = 'light'
mpl.rcParams['font.family'] = prop.get_name()
mpl.rcParams['font.weight'] = 'light'

fig, ax = plt.subplots()
ax.set_title('Text in a cool font', fontproperties=prop, size=40)
plt.savefig('/tmp/test2.png')

mais cela ne fait aucune différence.

/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.0-py2.7-linux-x86_64.egg/matplotlib/font_manager.py:1236: 
UserWarning: findfont: Font family ['Helvetica Neue'] not found. Falling back to Bitstream Vera Sans

cependant je semble éprouver ce problème seulement avec cette police Helvetica / Helvetica Neue. (prop.get_family (), self.defaultFamily [fontext]))

24
demandé sur gozzilli 2014-01-30 19:52:54

4 réponses

Cela ne va pas vous changer de police en permanence, mais il vaut la peine d'essayer

matplotlib.rc('font', family='sans-serif') 
matplotlib.rc('font', serif='Helvetica Neue') 
matplotlib.rc('text', usetex='false') 
matplotlib.rcParams.update({'font.size': 22})
13
répondu Brian 2014-02-14 10:45:39

Ubuntu 14.04 LTS

Télécharger les polices de caractères

sudo cp NotoSansKR-Regular.otf /usr/share/fonts/

mettre à Jour le cache de police

sudo fc-cache -fv

Vous pouvez consulter la liste des polices

fc-list

redémarrez ipython, etc. Vérifier la liste des polices

[f.name for f in matplotlib.font_manager.fontManager.ttflist]

prenez votre nom de police

import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family'] = 'Noto Sans Korean'

Draw

plt.title(u'한글 제목')
plt.xlabel(u'한글 축 이름')
plt.plot(range(5))
8
répondu KyungHoon Kim 2015-02-07 12:38:48

Le cache des polices s'affiche dans un endroit différent pour moi (.cache/matplotlib / fontList.cache.) Et avant j'en avais trois à des endroits différents d'une façon ou d'une autre :/

peut-être, essayez de rechercher dans votre répertoire d'accueil:

find ~/ -name fontList.cache -exec rm {} \;
1
répondu jmp 2015-09-03 19:15:31

Kim a déjà présenté la solution dynamique fonctionne parfaitement, et voici deux autres façons de faire la même chose en statique.

tout d'Abord, vous pouvez mettre une ligne au fichier rc pour matplotlib . Reportez-vous à cette page pour plus d'informations sur la localisation d'un fichier et les paramètres détaillés.

font.family : NanumGothic

deuxièmement, si vous travaillez avec ipython, vous pouvez mettre des commandes pour le réglage de la police dans un fichier de configuration pour l'interpréteur de commandes interactif. Trouver le fichier nommé ipython_config.py qui habituellement situé sous ~/.ipython/quelque part. Ajouter ensuite deux autres lignes à la liste, C. InteractiveShellApp.exec_lines .

c.InteractiveShellApp.exec_lines = [
    "import matplotlib as mpl",
    "mpl.rcParams['font.family'] = 'NanumGothic'"
]

ancien fonctionne toujours quel que soit l'environnement sur lequel vous exécutez votre script shell, car il charge la police lorsque votre script importe matplotlib .

1
répondu Lyle 2015-11-03 07:59:06