Sto creando una figura in Matplotlib come questa:
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')
Voglio specificare le dimensioni dei caratteri per il titolo della figura e le etichette degli assi. Ho bisogno che tutti e tre siano di dimensioni diverse, quindi impostare una dimensione globale dei caratteri (mpl.rcParams['font.size']=x
) non è quello che voglio. Come posso impostare le dimensioni dei caratteri per il titolo della figura e le etichette degli assi individualmente?
Le funzioni che trattano il testo come label
, title
, ecc. accettano parametri uguali a quelli di matplotlib.text.Text. Per la dimensione del carattere puoi usare 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')
Per impostare globalmente le dimensioni di titolo
e etichetta
, mpl.rcParams
contiene axes.titlesize
e axes.labelsize
. (Dalla pagina):
axes.titlesize : large # fontsize of the axes title
axes.labelsize : medium # fontsize of the x any y labels
(Per quanto posso vedere, non c'è modo di impostare separatamente le dimensioni delle etichette x
e y
).
E vedo che axes.titlesize
non ha effetto su suptitle
. Immagino che tu debba impostarlo manualmente.
Potete anche farlo globalmente tramite un dizionario 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)
Se siete più abituati ad usare gli oggetti ax
per fare i vostri grafici, potreste trovare il ax.xaxis.label.set_size()
più facile da ricordare, o almeno più facile da trovare usando il tab in un terminale ipython. Sembra che abbia bisogno di un'operazione di ridisegno dopo per vedere l'effetto. Per esempio:
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()
Non conosco un modo simile per impostare la dimensione del sottotitolo dopo la sua creazione.