Tworzę postać w Matplotlib w następujący sposób:
from matplotlib import pyplot as plt
fig = plt.figure()
plt.plot(data)
fig.suptitle('test title')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
fig.savefig('test.jpg')
Chcę określić rozmiary czcionek dla tytułu figury i etykiet osi. Potrzebuję wszystkich trzech, aby mieć różne rozmiary czcionek, więc ustawienie globalnego rozmiaru czcionki ( mpl.rcParams['font.size']=x
) nie jest tym, czego chcę. Jak ustawić rozmiary czcionek dla tytułu figury i etykiet osi indywidualnie?
python
matplotlib
vasek1
źródło
źródło
mpl.rcParams['font.size'] = 20
i spróbowałem zmienić wartości na 10 i 14. Najpierw odkryłem, że dostaję błędy, chyba że zmieniłemmpl
naplt
. Ta zmiana usunęła błąd, ale wtedy wiersz kodu nie miał wpływu na moje tytuły ani etykiety. Pewnie, że ta składnia jest poprawna?mpl
polecenia użyto innej linii importu ?Odpowiedzi:
Funkcje czynienia z tekstem jak
label
,title
itp akceptować parametry takie same jakmatplotlib.text.Text
. Do rozmiaru czcionki możesz użyćsize/fontsize
:Do globalnego ustawienia
title
ilabel
rozmiarówmpl.rcParams
zawieraaxes.titlesize
iaxes.labelsize
. (Ze strony):(O ile widzę, nie ma sposobu, aby oddzielnie ustawiać
x
iy
etykietować rozmiary.)I widzę, że
axes.titlesize
to nie ma wpływusuptitle
. Myślę, że musisz to ustawić ręcznie.źródło
mpl.rcParams
. Zredagowałem swoją odpowiedź.plt.rcParams.update({'axes.titlesize': 'small'})
rcParams
linku użyjfigure.titlesize
opróczaxes.titlesize
.python -c 'import matplotlib as mpl; print(mpl.__version__); print("figure.titlesize" in mpl.rcParams.keys())'
. Wynikiem tego jest1.5.1
,True
. 1) Jakiej wersji matplotlib używasz? Jaka wersja Pythona? 2) Czy może to być błąd, który z jakiegoś powodu akceptuje,str
ale nieunicode
w Py2?Możesz to zrobić globalnie za pomocą słownika rcParams:
źródło
'x-large'
?pylab.rcParams.keys()
aby zobaczyć pełną listę parametrów.ax.set_title('some title', fontsize=15)
,ax.set_xlabel('some xlabel', fontsize=12)
? Wygląda na to, żercParams
akceptuje tylko ciągi znaków.'axes.labelsize': 32,
Jeśli jesteś bardziej przyzwyczajony do używania
ax
obiektów do drukowania, możeszax.xaxis.label.set_size()
łatwiej je zapamiętać lub przynajmniej łatwiej znaleźć przy użyciu tabulatora w terminalu ipython. Wydaje się, że po operacji konieczne jest przerysowanie, aby zobaczyć efekt. Na przykład:Nie znam podobnego sposobu ustawiania rozmiaru napisów po ich utworzeniu.
źródło
fig.suptitle('test title', fontsize = 20)
wydaje się działać.ax.set_xlabel('xlabel', fontsize = 20)' also works, in which case we can do away with
ax.xaxis.label.set_size (20) `.ax.xaxis.label.set_size()
gdy pracuję interaktywnie z fabułą ipython i chcę przeprowadzić szybką wizualną ocenę różnych rozmiarów czcionek.plt.xlabel()
Vs.ax.set_xlabel()
jak mówisz), są one równoważne, z zastrzeżeniem, żeplt.*
funkcje działają na bieżącej osi / figurze. Więc jeśli ustawisz figurę z wieloma osiami, prawdopodobnie będziesz chciał użyć jawnych wywołań,ax1.set_xlabel()
aby uniknąć nieporozumień.Aby zmodyfikować tylko czcionkę tytułu (a nie czcionkę osi), użyłem tego:
Fontdict akceptuje wszystkie kwargs z matplotlib.text.Text .
źródło
rcParams
Należy dokonać globalnego ustawienia rozmiarów czcionek za pomocąWartości domyślne można przywrócić za pomocą
Możesz to również zrobić, tworząc arkusz stylów w
stylelib
katalogu w katalogu konfiguracyjnym matplotlib (możesz pobrać katalog konfiguracji zmatplotlib.get_configdir()
). Format arkusza stylów toJeśli masz arkusz stylów
/path/to/mpl_configdir/stylelib/mystyle.mplstyle
, możesz go użyć za pośrednictwemMożesz także utworzyć (lub zmodyfikować) plik matplotlibrc, który ma ten sam format
W zależności od tego, który plik matplotlibrc zmodyfikujesz, zmiany zostaną zastosowane tylko w bieżącym katalogu roboczym, dla wszystkich katalogów roboczych, które nie mają pliku matplotlibrc, lub dla wszystkich katalogów roboczych, które nie mają pliku matplotlibrc i gdzie żaden inny plik matplotlibrc nie ma zostało określone. Zobacz tę sekcję uzyskać więcej informacji, dostosowywania strony matplotlib.
Pełną listę
rcParams
klawiszy można pobrać za pomocąplt.rcParams.keys()
, ale w celu dostosowania rozmiarów czcionek masz (kursywa zacytowana tutaj )axes.labelsize
- Rozmiar czcionki etykiet xiyaxes.titlesize
- Rozmiar czcionki tytułu osifigure.titlesize
- Rozmiar tytułu figury (Figure.suptitle()
)xtick.labelsize
- Rozmiar czcionki etykiet kleszczyytick.labelsize
- Rozmiar czcionki etykiet kleszczylegend.fontsize
- Rozmiar czcionki dla legend (plt.legend()
,fig.legend()
)legend.title_fontsize
- Rozmiar czcionki dla tytułów legend,None
ustawiony na taki sam jak domyślne osie. Zobacz tę odpowiedź na przykład użycia.z których przyjąć rozmiary ciąg
{'xx-small', 'x-small', 'smaller', 'small', 'medium', 'large', 'larger', 'x-large', 'xxlarge'}
albofloat
inpt
. Rozmiary ciągu są definiowane w stosunku do domyślnego rozmiaru czcionki określonego przezfont.size
- domyślny rozmiar czcionki dla tekstu, podany w pkt. 10 pkt jest wartością standardowąDodatkowo można określić wagę (choć tylko dla domyślnej, na którą wygląda)
font.weight
- Domyślna grubość czcionki używanej przeztext.Text
. Akceptuje{100, 200, 300, 400, 500, 600, 700, 800, 900}
lub'normal'
(400),'bold'
(700)'lighter'
, i'bolder'
( w odniesieniu do bieżącej masy ).źródło
Alternatywnym rozwiązaniem zmiany rozmiaru czcionki jest zmiana wypełnienia. Gdy Python zapisuje plik PNG, możesz zmienić układ za pomocą okna dialogowego, które zostanie otwarte. Na tym etapie można zmienić odstępy między osiami, wypełnienie, jeśli chcesz.
źródło
Miejsce
right_ax
wcześniejset_ylabel()
ax.right_ax.set_ylabel('AB scale')
źródło
7 (najlepsze rozwiązanie)
6 (nieco gorsze rozwiązanie)
źródło