Kako v Matplotlibu nastavim velikost pisave naslova slike in oznak osi?

Ustvarjam sliko v Matplotlibu, kot je ta:

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')

Določiti želim velikost pisave za naslov slike in oznake osi. Vse tri pisave morajo biti različnih velikosti, zato določanje globalne velikosti pisave (mpl.rcParams['font.size']=x) ni tisto, kar želim. Kako lahko nastavim velikost pisave za naslov slike in oznake osi posamično?

Rešitev

Funkcije, ki se ukvarjajo z besedilom, kot so label, title itd., sprejemajo enake parametre kot matplotlib.text.Text. Za velikost pisave lahko uporabite 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')

Za globalno nastavitev velikosti naslova in nalepke vsebuje mpl.rcParams axes.titlesize in axes.labelsize. (Iz strani):

axes.titlesize      : large   # fontsize of the axes title
axes.labelsize      : medium  # fontsize of the x any y labels

(Kolikor vidim, ni načina za ločeno nastavitev velikosti oznak x in y.)

Vidim tudi, da axes.titlesize ne vpliva na suptitle. Mislim, da morate to nastaviti ročno.

Komentarji (9)

To lahko storite tudi globalno prek slovarja 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)
Komentarji (5)

Če ste bolj navajeni uporabljati predmete ax za izrisovanje, si boste morda lažje zapomnili ax.xaxis.label.set_size() ali vsaj lažje našli tab v terminalu ipythona. Zdi se, da je za prikaz učinka potrebna ponovna izrisovalna operacija. Na primer:

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()

Ne poznam podobnega načina za nastavitev velikosti nadnaslova po njegovem ustvarjanju.

Komentarji (4)