HOWTO · Matplotlib

Imposta il titolo della figura e la dimensione del carattere delle etichette degli assi in Matplotlib

La dimensione e il carattere del titolo e degli assi in Matplotlib possono essere impostati utilizzando il parametro della dimensione del carattere, label.set_size() e il dizionario rcParams.

In questa pagina

Per un singolo grafico, passa fontsize alle chiamate che impostano titolo ed etichette. Per applicare valori predefiniti riutilizzabili, aggiorna rcParams; per modificare singolarmente oggetti di testo già esistenti, chiama set_size(). Gli esempi usano un titolo Axes. Il titolo dell’intera figura è distinto e si imposta con fig.suptitle().

Impostare le dimensioni del titolo e delle etichette degli assi con fontsize

Passa fontsize direttamente a Axes.set_title(), Axes.set_xlabel() e Axes.set_ylabel(). Queste chiamate controllano il titolo e le etichette di quell’oggetto Axes. Se vuoi anche un titolo sopra l’intera figura, usa fig.suptitle() e assegnagli un valore fontsize distinto.

Matplotlib esprime le dimensioni numeriche dei caratteri in punti. Puoi usare lo stesso valore in più chiamate per ottenere un aspetto uniforme oppure scegliere una dimensione maggiore per il titolo, così da creare una gerarchia visiva. Poiché il valore viene passato a ciascuna chiamata che imposta il testo, puoi modificare un’etichetta senza cambiare le altre.

Questo esempio completo crea un grafico, imposta il titolo dell’oggetto Axes e le due etichette degli assi, quindi aggiunge un titolo distinto per l’intera figura. Adatta le dimensioni in punti al tuo layout.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([0, 1, 2], [0, 1, 4])
ax.set_title("Values by x", fontsize=16)
ax.set_xlabel("x", fontsize=12)
ax.set_ylabel("value", fontsize=12)
fig.suptitle("Example figure", fontsize=20)
plt.show()

Impostare le dimensioni predefinite dei caratteri con rcParams

rcParams contiene le impostazioni di configurazione predefinite di Matplotlib. Modificandolo, cambi i valori predefiniti usati dagli elementi del grafico creati successivamente nel processo Python corrente. Imposta questi valori prima di creare il grafico se vuoi applicarli in modo uniforme; per un elemento di testo che richiede una dimensione diversa, passa fontsize alla singola chiamata.

Usa axes.labelsize per le etichette degli assi x e y, axes.titlesize per i titoli degli oggetti Axes e figure.titlesize per i titoli dell’intera figura creati con fig.suptitle(). Le prime due impostazioni sono distinte da quella del titolo della figura. Questi parametri accettano una dimensione espressa, per esempio, in punti oppure un nome di dimensione supportato.

import matplotlib.pyplot as plt

plt.rcParams.update({
    "axes.labelsize": 12,
    "axes.titlesize": 16,
    "figure.titlesize": 20,
})

fig, ax = plt.subplots()
ax.plot([0, 1, 2], [0, 1, 4])
ax.set_title("Values by x")
ax.set_xlabel("x")
ax.set_ylabel("value")
fig.suptitle("Example figure")
plt.show()

Se solo un determinato grafico richiede valori predefiniti diversi, usa matplotlib.rc_context() per applicare impostazioni temporanee di rcParams a un blocco di codice. In questo modo tali scelte non diventano i valori predefiniti per i grafici successivi nello stesso processo.

Per esempio, with plt.rc_context({"axes.labelsize": 12, "axes.titlesize": 16}): limita queste due impostazioni al codice di disegno indentato. Fuori dal blocco, Matplotlib ripristina le impostazioni precedenti. È utile negli script che creano grafici con stili diversi.

Modificare singolarmente le dimensioni dei titoli e delle etichette con set_size()

Ogni titolo o etichetta degli assi è un oggetto di testo che dispone del metodo set_size(). È utile quando il grafico esiste già o quando titolo ed etichette richiedono dimensioni diverse. L’esempio seguente recupera l’oggetto Axes corrente con plt.gca(), quindi imposta la dimensione degli oggetti di testo del titolo e delle etichette.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([0, 1, 2], [0, 1, 4])
ax.set_title("Values by x")
ax.set_xlabel("x")
ax.set_ylabel("value")

axes = plt.gca()
axes.title.set_size(16)
axes.xaxis.label.set_size(12)
axes.yaxis.label.set_size(12)
plt.show()

Quando lavori con più oggetti Axes, conserva un riferimento a quello che vuoi modificare, per esempio con ax.title.set_size(16), invece di affidarti a plt.gca(), che restituisce l’oggetto Axes corrente. Per un titolo dell’intera figura, imposta la dimensione quando chiami fig.suptitle() oppure conserva l’oggetto di testo restituito e chiamane set_size(). Il titolo Axes appartiene a un singolo pannello; il titolo della figura descrive l’intera figura.