2016-06-20 18 views
5

Próbuję narysować wykres xkcd stylu z matplotlib (wersja 1.4.2.) Pod Pythona 3.matplotlib nie może znaleźć czcionki

Kiedy próbuję uruchomić:

import matplotlib.pyplot as plt 
plt.xkcd() 
plt.plot([1,2,3,4], [1,4,9,16], 'bo') 
plt.axis([0, 6, 0, 20]) 
plt.show() 

It otwiera puste okno bez żadnego obrazu i pojawia się błąd:

/usr/lib/python3/dist-packages/matplotlib/font_manager.py:1279: UserWarning: findfont: Font family ['Humor Sans', 'Comic Sans MS', 'StayPuft'] not found. Falling back to Bitstream Vera Sans 
    (prop.get_family(), self.defaultFamily[fontext])) 
/usr/lib/python3/dist-packages/matplotlib/font_manager.py:1289: UserWarning: findfont: Could not match :family=Bitstream Vera Sans:style=normal:variant=normal:weight=normal:stretch=normal:size=medium. Returning /usr/share/matplotlib/mpl-data/fonts/ttf/STIXSizOneSymReg.ttf 
    UserWarning) Exception in Tkinter callback 

Mam zainstalowany Humor Sans. Sprawdziłem to pod numerem fc-list | grep Humor. Może być również używany w innych programach, takich jak Libre Office. Mam również zainstalowany pakiet staypuft. Czy to nie wystarczy?

Ten sam kod powyżej ale bez klawisza plt.xkcd() działa bezbłędnie.

Alternatywa dla funkcji plt.show(), podobnie jak pylab.savefig(), nie działa dla kodu xkcd, ale nie ma problemu z tym samym kodem bez użycia xkcd.

Odpowiedz

4

Jeśli dodasz nową czcionkę po zainstalowaniu matplotlib, spróbuj usunąć ~/.matplotlib/fontList.cache, a matplotlib musisz przebudować czcionki.

+0

Nie mam katalogu ~/.matplotlib. Mam plik ~/.config/matplotlib, który jest pusty. –

+2

Szukałem fontList i znalazłem go w ~/.cache/matplotlib/fontList.py3k.cache. Usunięcie go powoduje, że powyższy kod działa ponownie. –

+1

Tak, lokalizacja plików konfiguracyjnych matplotlib jest definiowana przez system operacyjny. – Serenity