0Pricing
Pandas & NumPy Academy · Lezione

Etichette, titoli e salvataggio delle figure

Aggiunga le etichette degli assi, un titolo, una legenda e la formattazione dei tick, quindi salvi figure di qualità editoriale con savefig().

Etichette, titoli e salvataggio delle figure è una lezione Pandas & NumPy Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Pandas & NumPy Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Pandas & NumPy Academy include 4 lezioni in totale.

Dal grafico alla pubblicazione

Un grafico è efficace solo se i suoi assi sono etichettati, il titolo spiega il messaggio principale e il grafico viene salvato con una risoluzione sufficiente per il mezzo di destinazione. In questa lezione esamineremo le rifiniture che trasformano un grafico esplorativo rapido in una figura curata, adatta a una relazione, a una dashboard o a una pubblicazione accademica: etichette degli assi, formattazione dei tick, titoli, legende, annotazioni ed esportazione dei file.

Etichette degli assi con set_xlabel e set_ylabel

Impostate etichette descrittive per gli assi con ax.set_xlabel() e ax.set_ylabel(). Includete sempre le unità nell'etichetta (ad esempio, 'Revenue (USD)' anziché solo 'Revenue'). Usate fontsize per ingrandire le etichette nelle presentazioni e labelpad per aggiungere spazio tra l'asse e il testo dell'etichetta quando i tick sono grandi.

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(7, 4))
x = np.arange(1, 13)
y = np.random.randint(100, 500, 12)
ax.plot(x, y, 'o-', color='steelblue')

ax.set_xlabel('Month', fontsize=12, labelpad=8)
ax.set_ylabel('Revenue (USD thousands)', fontsize=12, labelpad=8)
# plt.show()
plt.close()

Titoli con set_title e suptitle

ax.set_title() imposta il titolo sopra un singolo oggetto Axes. Per le figure con più pannelli, fig.suptitle() aggiunge un titolo condiviso sopra tutti i sottografi. Controllate la dimensione del carattere con fontsize e la posizione verticale con y (il valore predefinito è 1.0). Un buon titolo esprime l'insight principale del grafico, non si limita a indicare cosa rappresentano gli assi: confrontate 'Monthly Revenue' con 'Revenue Peaked in Q3 and Fell 20% in Q4'.

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
ax1.plot([1,2,3], [1,4,9])
ax1.set_title('Subplot One', fontsize=11)

ax2.bar(['A','B','C'], [3,7,2])
ax2.set_title('Subplot Two', fontsize=11)

# Shared figure title
fig.suptitle('Annual Overview Dashboard', fontsize=14, fontweight='bold', y=1.02)
plt.tight_layout()
plt.close()

Controllare le etichette dei tick

Le etichette predefinite dei tick di Matplotlib sono spesso adeguate, ma a volte è necessario usare etichette personalizzate. Usate ax.set_xticks() per specificare le posizioni dei tick e ax.set_xticklabels() per impostare le etichette. Passate rotation=45 per inclinare le etichette lunghe ed evitare che si sovrappongano. Il parametro ha='right' (allineamento orizzontale) assicura che le etichette ruotate siano ancorate correttamente al relativo tick.

months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
          'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
values = np.random.randint(200, 600, 12)

fig, ax = plt.subplots(figsize=(9, 4))
ax.bar(range(12), values, color='steelblue')
ax.set_xticks(range(12))
ax.set_xticklabels(months, rotation=45, ha='right', fontsize=10)
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()

Formattare i valori dei tick

Usate i formatter di matplotlib.ticker per visualizzare i valori dei tick in un formato leggibile. FuncFormatter accetta una funzione che riceve il valore del tick e restituisce una stringa formattata. Alcuni formati comuni sono: separatore delle migliaia, simbolo della valuta, segno di percentuale e notazione scientifica. Applicatelo con ax.yaxis.set_major_formatter(formatter).

from matplotlib.ticker import FuncFormatter

def millions_fmt(x, pos):
    return f'${x/1e6:.1f}M'

fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(['Q1', 'Q2', 'Q3', 'Q4'], [1.2e6, 1.8e6, 2.1e6, 1.9e6], color='steelblue')
ax.yaxis.set_major_formatter(FuncFormatter(millions_fmt))
ax.set_title('Quarterly Revenue')
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()

Legende con ax.legend()

Chiamate ax.legend() per visualizzare una legenda per tutti gli elementi del grafico per i quali è stato impostato il parametro label. Personalizzatela con loc (posizione, ad esempio 'upper right', 'lower left'), ncol (numero di colonne), framealpha (trasparenza del riquadro) e fontsize. Per posizionare la legenda all'esterno dell'area del grafico, usate bbox_to_anchor insieme a loc.

fig, ax = plt.subplots(figsize=(7, 4))
for region, color in [('East','steelblue'),('West','coral'),('North','green')]:
    ax.plot(range(12), np.random.randint(100, 400, 12),
            marker='o', label=region, color=color)

ax.legend(loc='upper right', ncol=1, framealpha=0.8, fontsize=10)
ax.set_title('Monthly Sales by Region')
plt.close()

Aggiungere annotazioni testuali

ax.annotate(text, xy=(x_point, y_point), xytext=(x_text, y_text), arrowprops=...) aggiunge un'etichetta testuale con una freccia opzionale che punta a uno specifico punto dei dati. Usatelo per evidenziare valori massimi, anomalie o eventi importanti in un grafico. Il dizionario arrowprops controlla lo stile della freccia: arrowstyle='->' crea una freccia semplice.

y_vals = np.array([120, 180, 310, 250, 420, 380, 290])
x_vals = np.arange(len(y_vals))
peak_idx = np.argmax(y_vals)

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x_vals, y_vals, 'o-', color='steelblue')
ax.annotate(f'Peak: {y_vals[peak_idx]}',
            xy=(peak_idx, y_vals[peak_idx]),
            xytext=(peak_idx - 2, y_vals[peak_idx] + 30),
            arrowprops={'arrowstyle': '->', 'color': 'red'},
            fontsize=10, color='red')
plt.close()

Aggiungere linee di riferimento orizzontali e verticali

ax.axhline(y_value) traccia una linea orizzontale per tutta la larghezza dell'oggetto Axes, in corrispondenza del valore y specificato. ax.axvline(x_value) traccia una linea verticale. Entrambe accettano i parametri color, linestyle e linewidth. Le linee di riferimento vengono comunemente usate per indicare obiettivi, soglie o date di eventi nei grafici di serie temporali.

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randint(100, 400, 10), 'o-', color='steelblue')

# Target line
ax.axhline(y=250, color='red', linestyle='--', lw=1.5, label='Target')

# Event line
ax.axvline(x=5, color='orange', linestyle=':', lw=1.5, label='Campaign start')

ax.legend()
ax.set_title('Revenue vs Target')
plt.close()

Applicare stili con i temi

Matplotlib include diversi fogli di stile integrati che modificano l'aspetto generale di tutte le figure senza richiedere modifiche al codice: 'seaborn-v0_8-whitegrid', 'fivethirtyeight', 'ggplot', 'bmh' e altri. Applicate uno stile con plt.style.use('style_name') all'inizio dello script. Usate plt.style.context('style_name') come context manager per applicare uno stile solo all'interno di un blocco.

# Apply a style globally
plt.style.use('seaborn-v0_8-whitegrid')
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randn(10).cumsum())
ax.set_title('Seaborn Whitegrid Style')
plt.close()

# Reset to default
plt.rcdefaults()

Salvare le figure con savefig()

fig.savefig('filename.png') salva la figura in un file. Parametri importanti: dpi (punti per pollice: usate 150 per lo schermo e 300 per la stampa), bbox_inches='tight' (impedisce che le etichette vengano tagliate) e format (dedotto dall'estensione o specificato esplicitamente). Formati comuni: '.png' (raster, adatto al web), '.pdf' (vettoriale, adatto alla stampa), '.svg' (vettoriale, modificabile in Illustrator).

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(range(10), np.random.randn(10), 'o-')
ax.set_title('Export Example')
ax.set_xlabel('Step')
ax.set_ylabel('Value')

# Save as PNG (screen quality)
fig.savefig('/tmp/chart_screen.png', dpi=150, bbox_inches='tight')

# Save as PDF (print quality)
fig.savefig('/tmp/chart_print.pdf', dpi=300, bbox_inches='tight')

plt.close()
print('Figures saved.')

Esempio completo: grafico curato per una relazione

Ecco un flusso di lavoro completo che combina tutte le tecniche di questa lezione: un grafico curato di una serie temporale con etichette degli assi, tick dell'asse y formattati, una linea orizzontale per l'obiettivo, un'annotazione sul picco ed esportazione in un file PNG ad alta risoluzione. Questo è il modello che userete per qualsiasi grafico da inserire in una relazione o in una dashboard.

from matplotlib.ticker import FuncFormatter

fig, ax = plt.subplots(figsize=(9, 5))
months = list(range(1, 13))
revenue = [120, 145, 132, 160, 175, 190, 210, 185, 220, 200, 240, 260]
peak = max(revenue)
peak_idx = revenue.index(peak)

ax.plot(months, revenue, 'o-', color='steelblue', lw=2, markersize=6)
ax.axhline(y=180, color='red', ls='--', lw=1.2, label='Target: $180K')
ax.annotate(f'Peak ${peak}K', xy=(peak_idx+1, peak),
            xytext=(peak_idx-1.5, peak+15),
            arrowprops={'arrowstyle': '->'}, fontsize=9)
ax.set_xticks(months)
ax.set_xticklabels(['Jan','Feb','Mar','Apr','May','Jun',
                    'Jul','Aug','Sep','Oct','Nov','Dec'], rotation=45, ha='right')
ax.yaxis.set_major_formatter(FuncFormatter(lambda x,p: f'${x:.0f}K'))
ax.set_title('2024 Monthly Revenue vs Target', fontsize=13, fontweight='bold')
ax.set_ylabel('Revenue')
ax.legend()
plt.tight_layout()
plt.close()

Verifica rapida

Verificate la vostra comprensione delle etichette, dei titoli e del salvataggio delle figure presentati in questa lezione.

Riepilogo della lezione

In questa lezione avete imparato che set_xlabel()/set_ylabel()/set_title() aggiungono testo descrittivo; FuncFormatter formatta i valori dei tick come valute o percentuali; ax.annotate() aggiunge etichette testuali con freccia per evidenziare i punti chiave dei dati; axhline()/axvline() tracciano linee di riferimento; e fig.savefig() con dpi e bbox_inches='tight' produce esportazioni di qualità editoriale. Con questo si conclude il corso sui fondamenti di Matplotlib: ora passeremo a Seaborn per i grafici statistici.

Domande Frequenti

La lezione «Etichette, titoli e salvataggio delle figure» è gratuita?

Sì — il testo completo di «Etichette, titoli e salvataggio delle figure» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Pandas & NumPy Academy, passa a CoddyKit PRO. Il corso Pandas & NumPy Academy include 4 lezioni in totale.

Cosa imparerò in «Etichette, titoli e salvataggio delle figure»?

Aggiunga le etichette degli assi, un titolo, una legenda e la formattazione dei tick, quindi salvi figure di qualità editoriale con savefig(). Eserciti Pandas & NumPy Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Pandas & NumPy Academy?

Non è richiesta alcuna esperienza precedente. Pandas & NumPy Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Etichette, titoli e salvataggio delle figure»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Pandas & NumPy Academy?

Sì. Ogni lezione Pandas & NumPy Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Architettura di Figure e Axes
  2. Grafici a linee e a dispersione
  3. Grafici a barre e istogrammi
  4. Etichette, titoli e salvataggio delle figure
← Torna a Pandas & NumPy Academy