Jak zmienić rozmiar czcionki dla wszystkich elementów (tików, etykiet, tytułu) na wykresie matplotlib?
Wiem, jak zmienić rozmiary etykiet kleszczy, odbywa się to za pomocą:
import matplotlib
matplotlib.rc('xtick', labelsize=20)
matplotlib.rc('ytick', labelsize=20)
Ale jak zmienić resztę?
python
matplotlib
font-size
Herman Schaaf
źródło
źródło
'family'
,'weight'
itp?'family'
Like'normal'
,'sans-serif'
itpimport matplotlib.pyplot as plt
, można przypomnieć, żepyplot
marc
tak dobrze. Możesz to zrobićplt.rc(...
bez konieczności zmiany importu.Jeśli jesteś maniakiem kontroli, takim jak ja, możesz jawnie ustawić wszystkie rozmiary czcionek:
Pamiętaj, że możesz również ustawić rozmiary wywołując
rc
metodę namatplotlib
:źródło
plt.rc('axes', titlesize=BIGGER_SIZE)
plt.rc('axes', titlesize=SMALL_SIZE, labelsize=MEDIUM_SIZE)
źródło
Jeśli chcesz zmienić rozmiar czcionki dla określonego wykresu, który został już utworzony, spróbuj tego:
źródło
ax=plt.gca()
jeśli wykres został utworzony bez definiowania osi.ax.get_legend().get_texts()
, ponieważax.legend()
przerysowuje całą legendę z domyślnymi parametrami nad zwracaniem wartościax.get_legend()
.Aktualizacja: patrz na dole odpowiedzi, aby uzyskać nieco lepszy sposób na zrobienie tego.
Aktualizacja nr 2: Wymyśliłem też zmianę czcionek tytułu legendy.
Aktualizacja nr 3: W Matplotlib 2.0.0 występuje błąd, który powoduje, że etykiety podziałek dla osi logarytmicznych powracają do domyślnej czcionki. Powinien zostać naprawiony w wersji 2.0.1, ale obejrzałem to obejście w drugiej części odpowiedzi.
Ta odpowiedź jest dla każdego, kto próbuje zmienić wszystkie czcionki, w tym dla legendy, i dla każdego, kto próbuje użyć różnych czcionek i rozmiarów dla każdej rzeczy. Nie używa rc (co wydaje się nie działać dla mnie). Jest to raczej kłopotliwe, ale nie mogłem osobiście poradzić sobie z żadną inną metodą. Zasadniczo łączy odpowiedź ryggyr tutaj z innymi odpowiedziami na temat SO.
Zaletą tej metody jest to, że mając kilka słowników czcionek, możesz wybierać różne czcionki / rozmiary / gramatury / kolory dla różnych tytułów, wybierać czcionkę dla etykiet zaznaczenia i wybierać czcionkę dla legendy, wszystkie niezależnie.
AKTUALIZACJA:
Opracowałem nieco inne, mniej zagracone podejście, które eliminuje słowniki czcionek i dopuszcza dowolną czcionkę w twoim systemie, nawet czcionki .otf. Aby mieć osobne czcionki dla każdej rzeczy, po prostu napisz więcej
font_path
ifont_prop
polub zmienne.Mam nadzieję, że jest to wyczerpująca odpowiedź
źródło
Oto zupełnie inne podejście, które zadziwiająco dobrze zmienia rozmiary czcionek:
Zmień rozmiar figury !
Zwykle używam takiego kodu:
Im mniejszy jest rozmiar figury, tym większa jest czcionka względem wykresu . To również skaluje znaczniki. Uwaga Ustawiam także
dpi
kropkę lub na cal. Nauczyłem się tego na forum AMTA (American Modeling Teacher of America). Przykład z powyższego kodu:źródło
bbox_inches
argumentemfig.savefig('Basic.png', bbox_inches="tight")
Posługiwać się
plt.tick_params(labelsize=14)
źródło
Można użyć
plt.rcParams["font.size"]
do ustawianiafont_size
wmatplotlib
, a także można wykorzystywaćplt.rcParams["font.family"]
do ustawianiafont_family
wmatplotlib
. Spróbuj tego przykładu:źródło
Oto, czego zwykle używam w Jupyter Notebook:
źródło
Na podstawie powyższych rzeczy:
źródło
Jest to rozszerzenie do Marius Retegan odpowiedź . Możesz utworzyć osobny plik JSON ze wszystkimi modyfikacjami, a następnie załadować go za pomocą rcParams.update. Zmiany będą miały zastosowanie tylko do bieżącego skryptu. Więc
i zapisz plik „example_file.json” w tym samym folderze.
źródło
Całkowicie zgadzam się z profesorem Husterem, że najprostszym sposobem jest zmiana rozmiaru rysunku, co pozwala zachować domyślne czcionki. Musiałem tylko uzupełnić to opcją bbox_inches podczas zapisywania figury jako pdf, ponieważ wycięto etykiety osi.
źródło