Pobrałem kilka czcionek .ttf i umieściłem je w moim katalogu domowym w ~/.fonts. Kiedy biegnę

matplotlib.font_manager.get_fontconfig_fonts()

Te czcionki pojawiają się na liście (według ścieżki). Potrafię też biegać

matplotlib.font_manager.FontProperties(<path>).get_name()

I odzyskaj nazwy czcionek, na przykład „Impact”.

Ale kiedy próbuję tego:

import matplotlib.pyplot as plt
plt.text(0,0,'Hello',fontname='Impact')

Mówi, że rodzina czcionek nie została znaleziona. Czcionki w publicznym obszarze /usr/share/ działają zgodnie z oczekiwaniami.

Jak mogę sprawić, by matplotlib wiedział, gdzie szukać podczas wykonywania połączenia?

1
Mastiff 20 listopad 2019, 22:07

1 odpowiedź

Najlepsze, co wymyśliłem, to bezpośrednie użycie fontproperties.

To daje listę ścieżek, w tym czcionki katalogu domowego:

matplotlib.font_manager.get_fontconfig_fonts()

Dla dowolnej ścieżki pliku podaj fontproperties:

prop = matplotlib.font_manager.FontProperties(<path>)

Rozmiar można zmienić w tym obiekcie, ale pogrubienie i kursywa są wbudowane.

Możesz go używać tak, jak jest:

plt.text(0,0,'Hello',fontproperties=prop)

To jest w porządku, ale nie idealne, ponieważ będziesz mieć tylko listę ścieżek i nie możesz po prostu określić, czy chcesz pogrubioną kursywą Arial, czy coś. Stworzenie słownika nie wymagałoby jednak zbyt wiele pracy, ponieważ ta informacja jest we właściwościach.

0
Mastiff 22 listopad 2019, 19:10