2017-02-07 13 views
16

Używam matplotlib wersji 2.0.0 na Pythonie 3 w środowisku wirtualnym miniconda. Pracuję nad uniksowym klastrem obliczeń naukowych, w którym nie mam uprawnień roota. Generalnie wykonuję kod Pythona przez notatnik w ipythonie. Jeśli zrobię podstawowe komendy, takie jak:Matplotlib nie może znaleźć podstawowych czcionek

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

otrzymuję komunikat o błędzie:

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

chciałbym móc używać czcionki Times New Roman, ale nawet po usunięciu pliku pamięci podręcznej czcionki (fontList.py3k.cache), które mogę znaleźć tutaj:

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

polecenia:

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

nie działają, pojawia się ten sam błąd, co powyżej. Prawdziwy katalog czcionek typu:

path_to_miniconda/miniconda3/envs/conda34/lib/python3.4/site-packages/matplotlib/MPL-data/fonts/TTF/

ma tylko 40 czcionek w nim znaku typ: DejaVuSerif, DejaVuSans, STIX, cmb, cmt, cmy

Czy wiesz, co może się stać i jak mogę dodać dodatkowe czcionki? Dzięki!

+0

Miałem ten sam problem. Dziękuję za twoją wskazówkę fm.get_cachedir(), wymazywałem niewłaściwą pamięć podręczną i teraz działa! Dziękujemy :) –

Odpowiedz

7

Ta praca mnie ::

$ sudo apt-get install msttcorefonts -qq 
+0

Użytkownicy Docker będą musieli automatycznie zaakceptować umowę licencyjną: 'RUN echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections' 'RUN apt-get install -y ttf-mscorefonts-installer' –

9

miałem dokładnie ten sam problem na Vagrant VM Ubuntu Xenial 64-bitowych. Bez względu na to, ile czcionek już zainstalowałem, matplotlib miał problem z "systemową" nazwą czcionki "sans-serif". Naprawiłem go:

  • Zatrzymywanie Jupyter
  • Instalacja font-manager: sudo apt install font-manager
  • Czyszczenie katalogu pamięci podręcznej matplotlib: rm ~/.cache/matplotlib -fr
  • Ponowne uruchomienie Jupyter.

Nie ma więcej komunikatów o błędach dotyczących sans-serif.