Jak ustawić czcionkę etykiet TITLE i axes w Matplotlib?
Tworzę figurę w Matplotlib TAK:
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ć rozmiar czcionki dla tytułu rysunku i etykiet osi. Wszystkie trzy muszą mieć różne rozmiary czcionek, więc ustawienie globalnego rozmiaru czcionki (mpl.rcParams['font.size']=x
) nie jest tym, czego chcę. Jak ustawić indywidualnie rozmiary czcionek dla tytułu rysunku i etykiet osi?
9 answers
Funkcje zajmujące się tekstem jak label
, title
, itd. Akceptuj parametry takie same jak matplotlib.text.Text
. Dla rozmiaru czcionki można użyć size/fontsize
:
from matplotlib import pyplot as plt
fig = plt.figure()
plt.plot(data)
fig.suptitle('test title', fontsize=20)
plt.xlabel('xlabel', fontsize=18)
plt.ylabel('ylabel', fontsize=16)
fig.savefig('test.jpg')
Dla globalnie ustawianych rozmiarów title
i label
, mpl.rcParams
zawiera axes.titlesize
i axes.labelsize
. (Ze strony):
axes.titlesize : large # fontsize of the axes title
axes.labelsize : medium # fontsize of the x any y labels
(z tego co widzę, nie ma możliwości oddzielenia rozmiarów etykiet x
i y
.)
I widzę, że axes.titlesize
nie wpływa na suptitle
. Chyba musisz to ustawić ręcznie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-10 19:30:47
Możesz to zrobić również globalnie poprzez słownik rcParams:
import matplotlib.pylab as pylab
params = {'legend.fontsize': 'x-large',
'figure.figsize': (15, 5),
'axes.labelsize': 'x-large',
'axes.titlesize':'x-large',
'xtick.labelsize':'x-large',
'ytick.labelsize':'x-large'}
pylab.rcParams.update(params)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-07 17:13:01
Jeśli jesteś bardziej przyzwyczajony do używania ax
obiektów do tworzenia wykresów, może okazać się, że ax.xaxis.label.set_size()
jest łatwiejsza do zapamiętania, a przynajmniej łatwiejsza do znalezienia za pomocą karty w terminalu ipython. Wydaje się, że potrzeba operacji przerysowania, aby zobaczyć efekt. Na przykład:
import matplotlib.pyplot as plt
# set up a plot with dummy data
fig, ax = plt.subplots()
x = [0, 1, 2]
y = [0, 3, 9]
ax.plot(x,y)
# title and labels, setting initial sizes
fig.suptitle('test title', fontsize=12)
ax.set_xlabel('xlabel', fontsize=10)
ax.set_ylabel('ylabel', fontsize='medium') # relative to plt.rcParams['font.size']
# setting label sizes after creation
ax.xaxis.label.set_size(20)
plt.draw()
Nie znam podobnego sposobu, aby ustawić rozmiar suptitle po jego utworzeniu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-15 18:27:36
Aby zmodyfikować tylko czcionkę tytułu (a nie czcionkę osi) użyłem tego:
import matplotlib.pyplot as plt
fig = plt.Figure()
ax = fig.add_subplot(111)
ax.set_title('My Title', fontdict={'fontsize': 8, 'fontweight': 'medium'})
Fontdict akceptuje wszystkie kwarki z matplotlib.tekst.Tekst .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-24 23:27:47
Zgodnie z oficjalnym przewodnikiem stosowanie
pylab
nie jest już zalecane.matplotlib.pyplot
powinny być używane bezpośrednio zamiast.
Globalnie ustawianie rozmiarów czcionek za pomocą rcParams
powinno odbywać się za pomocą
import matplotlib.pyplot as plt
plt.rcParams['axes.labelsize'] = 16
plt.rcParams['axes.titlesize'] = 16
# or
params = {'axes.labelsize': 16,
'axes.titlesize': 16}
plt.rcParams.update(params)
# or
import matplotlib as mpl
mpl.rc('axes', labelsize=16, titlesize=16)
# or
axes = {'labelsize': 16,
'titlesize': 16}
mpl.rc('axes', **axes)
Wartości domyślne można przywrócić za pomocą
plt.rcParams.update(plt.rcParamsDefault)
Można to również zrobić, tworząc arkusz stylów w katalogu stylelib
pod katalogiem konfiguracyjnym matplotlib (można pobrać katalog konfiguracji z matplotlib.get_configdir()
). Arkusz stylów format to
axes.labelsize: 16
axes.titlesize: 16
Jeśli masz arkusz stylów w /path/to/mpl_configdir/stylelib/mystyle.mplstyle
, możesz go użyć poprzez
plt.style.use('mystyle')
# or, for a single section
with plt.style.context('mystyle'):
# ...
Możesz również utworzyć (lub zmodyfikować) plik matplotlibrc , który dzieli format
axes.labelsize = 16
axes.titlesize = 16
W zależności od tego, który plik matplotlibrc zmodyfikujesz te zmiany będą używane tylko dla bieżącego katalogu roboczego, dla wszystkich katalogów roboczych, które mają nie mają plik matplotlibrc, lub dla wszystkich katalogów roboczych, które mają nie mają plik matplotlibrc i gdzie nie podano innego pliku matplotlibrc. Zobacz Ta sekcja dostosowywanie strony matplotlib aby uzyskać więcej szczegółów.
Pełną listę klawiszy rcParams
można pobrać za pomocą plt.rcParams.keys()
, ale do dostosowania rozmiaru czcionki masz (kursywę cytowaną z tutaj )
-
axes.labelsize
- wielkość liter x i y -
axes.titlesize
- Fontsize: s POS title -
figure.titlesize
- wielkość tytułu rysunku (Figure.suptitle()
) -
xtick.labelsize
- Fontsize: s POS: [72]} -
ytick.labelsize
- Fontsize: s POS: [72]} -
legend.fontsize
- Fontsize: s (plt.legend()
,fig.legend()
) -
legend.title_fontsize
- Fontsize dla tytułów legend,None
ustawia na takie same jak domyślne osie. Zobacz ta odpowiedź dla przykładu użycia.
Wszystkie, które akceptują rozmiary łańcuchów {'xx-small', 'x-small', 'smaller', 'small', 'medium', 'large', 'larger', 'x-large', 'xxlarge'}
lub float
w pt
. Rozmiary łańcuchów są definiowane względem domyślnej czcionki rozmiar, który jest określony przez
-
font.size
- domyślny rozmiar czcionki dla tekstu, podany w pkt. 10 pkt jest wartością standardową
Dodatkowo, waga może być określona (choć tylko dla domyślnej) przez
-
font.weight
- domyślna waga czcionki używanej przeztext.Text
. Przyjmuje{100, 200, 300, 400, 500, 600, 700, 800, 900}
lub'normal'
(400),'bold'
(700),'lighter'
, oraz'bolder'
(względny względem aktualnej wagi).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-16 01:46:31
Inni dostarczyli odpowiedzi, jak zmienić rozmiar etykiety, ale jeśli chodzi o rozmiar etykiety osi, możesz również użyć metody set_tick_params .
Np., aby Rozmiar etykiety znacznika osi X był mały:
ax.xaxis.set_tick_params(labelsize='small')
Lub, aby etykieta na osi Y była duża:
ax.yaxis.set_tick_params(labelsize='large')
Możesz również wprowadzić labelsize
jako zmiennoprzecinkowy lub jedną z następujących opcji: 'xx-small',' x-small',' small',' medium',' large',' x-large 'lub'xx-large'.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-20 20:14:38
Alternatywnym rozwiązaniem dla zmiany rozmiaru czcionki jest zmiana wypełnienia. Gdy Python zapisuje plik PNG, można zmienić układ za pomocą okna dialogowego, które zostanie otwarte. Odstępy między osiami, wyściółki, jeśli chcesz, mogą być zmieniane na tym etapie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-09 21:24:00
Miejsce right_ax
przed set_ylabel()
ax.right_ax.set_ylabel('AB scale')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-21 18:51:02
7 (najlepsze rozwiązanie)
from numpy import*
import matplotlib.pyplot as plt
X = linspace(-pi, pi, 1000)
class Crtaj:
def nacrtaj(self,x,y):
self.x=x
self.y=y
return plt.plot (x,y,"om")
def oznaci(self):
return plt.xlabel("x-os"), plt.ylabel("y-os"), plt.grid(b=True)
6 (nieco gorsze rozwiązanie)
from numpy import*
M = array([[3,2,3],[1,2,6]])
class AriSred(object):
def __init__(self,m):
self.m=m
def srednja(self):
redovi = len(M)
stupci = len (M[0])
lista=[]
a=0
suma=0
while a<stupci:
for i in range (0,redovi):
suma=suma+ M[i,a]
lista.append(suma)
a=a+1
suma=0
b=array(lista)
b=b/redovi
return b
OBJ = AriSred(M)
sr = OBJ.srednja()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55