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:
Installé Helvetica Neue
$ fc-match 'Helvetica Neue':Light HelveticaNeue-Light.otf: "Helvetica Neue" "細體"
à convertir odt/dfont en ttf:
fondu -show HelveticaNeue.dfont
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
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]))
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})
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))
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 {} \;
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 .