J'essaie de changer la police par défaut de matplotlib en Helvetica Neue. Sur mon Mac avec EPD/Canopy, tout fonctionnait bien il y a quelque temps.
Essayer de faire la même chose sur Ubuntu maintenant et ça ne marche pas.
C'est ce que j'ai fait:
Helvetica Neue installé
$ fc-match 'Helvetica Neue':Light
HelveticaNeue-Light.otf: "Helvetica Neue" "細體"
Converti l'odt/dfont en ttf:
fondu -show HelveticaNeue.dfont
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 supprimé le cache des polices
rm ~/.config/matplotlib/fontList.cache
Mais aucune de ces étapes 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]))
La version est 1.3.0
$ python -c 'import matplotlib; print matplotlib.__version__'
1.3.0
J'ai également essayé de déplacer les polices vers ~/.config/matplotlib/fonts/ttf
mais ça n'a pas marché.
EDIT: Comme suggéré, j'ai essayé de 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 rencontrer ce problème uniquement avec cette police Helvetica/Helvetica Neue. (prop.get_family (), self.defaultFamily [fontext]))
Cela ne changera pas votre police de façon permanente, mais cela 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échargez les polices
Sudo cp NotoSansKR-Regular.otf /usr/share/fonts/
Mettre à jour le cache de police
Sudo fc-cache -fv
Vous pouvez vérifier la liste des polices
fc-list
Redémarrez ipython, etc. Vérifiez 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'
Dessiner
plt.title(u'한글 제목')
plt.xlabel(u'한글 축 이름')
plt.plot(range(5))
Kim a déjà introduit une solution dynamique qui fonctionne parfaitement, et voici deux autres façons de faire la même chose en statique.
Tout d'abord, vous pouvez mettre une ligne dans le fichier rc pour matplotlib. Reportez-vous à cette page pour plus d'informations sur la localisation du fichier et les paramètres détaillés.
font.family : NanumGothic
Deuxièmement, si vous travaillez avec ipython, vous pouvez placer des commandes de définition de police dans un fichier de configuration du shell interactif. Recherchez le fichier nommé ipython_config.py qui se trouve généralement sous ~/.ipython/quelque part. Ajoutez ensuite deux autres lignes à la liste, c.InteractiveShellApp.exec_lines.
c.InteractiveShellApp.exec_lines = [
"import matplotlib as mpl",
"mpl.rcParams['font.family'] = 'NanumGothic'"
]
Former 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.
Le cache des polices apparaît à un endroit différent pour moi (.cache/matplotlib/fontList.cache). Et avant, j'en avais en fait trois à différents endroits: /
essayez peut-être de le rechercher dans votre répertoire personnel:
find ~/ -name fontList.cache -exec rm {} \;