Menu
CoddyTech

Matplotlib Cheat Sheet

Ultimo aggiornamento

Figure e axes

Una figure è l'intera immagine. Un axes è un singolo grafico al suo interno, e quasi tutte le chiamate qui sotto sono metodi di ax.

AttivitàCodice
Importare pyplotimport matplotlib.pyplot as plt
Una figure con un graficofig, ax = plt.subplots()
Impostare la dimensione in pollicifig, ax = plt.subplots(figsize=(8, 4))
Disegnare sugli axesax.plot(x, y)
Mostrare la figureplt.show()
Salvare come PNG nitidofig.savefig("chart.png", dpi=150, bbox_inches="tight")
Salvare in grafica vettorialefig.savefig("chart.svg"), fig.savefig("chart.pdf")
Sfondo trasparentefig.savefig("chart.png", transparent=True)
Chiudere una figure per liberare memoriaplt.close(fig)
Stile pyplot rapido per un graficoplt.plot(x, y) plt.title("Quick look") plt.show()

Tipi di grafico

AttivitàCodice
Grafico a lineeax.plot(x, y)
Grafico a dispersioneax.scatter(x, y, s=20, alpha=0.7)
Dispersione colorata per valore, con barra coloripoints = ax.scatter(x, y, c=y, cmap="viridis") fig.colorbar(points, ax=ax)
Grafico a barreax.bar(cats, a)
Grafico a barre orizzontaliax.barh(cats, a)
Barre in pilaax.bar(cats, a, label="2025") ax.bar(cats, b, bottom=a, label="2026")
Barre raggruppatepos = np.arange(len(cats)) ax.bar(pos - 0.2, a, width=0.4) ax.bar(pos + 0.2, b, width=0.4) ax.set_xticks(pos, labels=cats)
Istogrammaax.hist(data, bins=30)
Box plotax.boxplot([data, data * 2], tick_labels=["A", "B"])
Violin plotax.violinplot([data, data * 2])
Grafico a tortaax.pie([40, 35, 25], labels=cats, autopct="%1.0f%%")
Banda tra due curveax.fill_between(x, y - 0.2, y + 0.2, alpha=0.3)
Barre di erroreax.errorbar([1, 2, 3], [4, 5, 3], yerr=[0.5, 0.3, 0.6], fmt="o", capsize=4)
Grafico a gradiniax.step(x, y, where="mid")
Heatmap di un array 2Dimage = ax.imshow(np.random.default_rng(0).random((5, 5)), cmap="magma") fig.colorbar(image, ax=ax)
Grafico a contorni riempitiX, Y = np.meshgrid(x, x) ax.contourf(X, Y, np.sin(X) * np.cos(Y), levels=20)
Densità di molti puntiax.hexbin(data, data + np.random.default_rng(1).normal(size=200), gridsize=20)
Linea di riferimento orizzontale o verticaleax.axhline(0, color="gray", linestyle="--"), ax.axvline(5)
Evidenziare un intervalloax.axvspan(2, 4, alpha=0.2)

Linee, marker e colori

AttivitàCodice
Colore, spessore e stile della lineaax.plot(x, y, color="tab:red", linewidth=2, linestyle="--")
Marker sui puntiax.plot(x, y, marker="o", markersize=4)
Stringa di formato breveax.plot(x, y, "g--o")
Trasparenzaax.plot(x, y, alpha=0.5)
Stili di linea"-", "--", "-.", ":"
Codici dei marker"o", "s", "^", "x", ".", "*"
Modi per indicare un colore"tab:blue", "C1", "#1f77b4", (0.2, 0.4, 0.6)
n colori da una colormapcolors = plt.colormaps["viridis"](np.linspace(0, 1, 5))
Il tuo ciclo di coloriax.set_prop_cycle(color=["#0b7285", "#e8590c", "#5f3dc4"])
Barre con bordo e tratteggioax.bar(cats, a, color="white", edgecolor="black", hatch="//")

Titoli, etichette e legende

AttivitàCodice
Titolo ed etichette degli assiax.set_title("Sales"), ax.set_xlabel("Month"), ax.set_ylabel("EUR")
Tutto in una sola chiamataax.set(title="Sales", xlabel="Month", ylabel="EUR")
Legenda dalle etichette delle lineeax.plot(x, y, label="sin") ax.legend()
Posizione e colonne della legendaax.legend(loc="upper right", ncols=2, frameon=False)
Legenda fuori dal graficoax.legend(loc="center left", bbox_to_anchor=(1, 0.5))
Testo in una posizione dei datiax.text(5, 0.5, "note")
Annotazione con frecciaax.annotate("peak", xy=(1.57, 1), xytext=(3, 1.2), arrowprops=dict(arrowstyle="->"))
Valori sulle barrebars = ax.bar(cats, a) ax.bar_label(bars)
Titolo dell'intera figurefig.suptitle("Q1 report")
Formule matematiche nelle etichetteax.set_xlabel(r"$\alpha$ (rad)")

Assi, tick e scale

AttivitàCodice
Limiti degli assiax.set_xlim(0, 10), ax.set_ylim(bottom=0)
Scala logaritmicaax.set_yscale("log")
Scegliere i tick e le loro etichetteax.set_xticks([0, 5, 10], labels=["start", "middle", "end"])
Ruotare le etichette dei tickax.tick_params(axis="x", labelrotation=45)
Grigliaax.grid(True, alpha=0.3)
Asse in percentualefrom matplotlib.ticker import PercentFormatter ax.yaxis.set_major_formatter(PercentFormatter(1.0))
Separatore delle migliaiaax.yaxis.set_major_formatter("{x:,.0f}")
Nascondere i bordi superiore e destroax.spines[["top", "right"]].set_visible(False)
Secondo asse y a destraax2 = ax.twinx() ax2.plot(x, y * 100, color="tab:orange")
Stessa scala su entrambi gli assiax.set_aspect("equal")
Invertire un asseax.invert_yaxis()
Nascondere completamente gli assiax.axis("off")
Etichette delle date leggibilifig.autofmt_xdate()

Subplot e layout

plt.subplots(rows, cols) restituisce un array NumPy di axes. Indicizzalo come un array.

AttivitàCodice
Griglia di graficifig, axs = plt.subplots(2, 2, figsize=(8, 6))
Disegnare su uno di essiaxs[0, 1].plot(x, y)
Ciclare su tuttifor ax in axs.flat: ax.grid(True)
Condividere un asse tra graficifig, axs = plt.subplots(1, 3, sharey=True)
Spaziatura senza sovrapposizionifig, axs = plt.subplots(2, 2, layout="constrained")
Correggere le sovrapposizioni dopo il disegnofig.tight_layout()
Colonne di larghezza diversafig, axs = plt.subplots(1, 2, width_ratios=[3, 1])
Layout con nomi e un pannello largofig, axd = plt.subplot_mosaic([["top", "top"], ["left", "right"]]) axd["top"].plot(x, y)
Piccolo grafico dentro un graficoinset = ax.inset_axes([0.6, 0.6, 0.35, 0.35])
Nascondere un pannello vuotoaxs[0].axis("off")

Stili e impostazioni predefinite

AttivitàCodice
Usare uno stile integratoplt.style.use("ggplot")
Elencare gli stiliplt.style.available
Aspetto seaborn senza seabornplt.style.use("seaborn-v0_8-whitegrid")
Stile per una sola figurewith plt.style.context("dark_background"): fig, ax = plt.subplots()
Dimensione predefinita del fontplt.rcParams["font.size"] = 12
Dimensione e risoluzione predefinite della figureplt.rcParams["figure.figsize"] = (8, 4), plt.rcParams["figure.dpi"] = 120
Tornare ai valori predefinitiplt.style.use("default")
Colormap comuni: sequenziale, divergente, grigi"viridis", "coolwarm", "Greys"

Grafici da pandas

pandas disegna con Matplotlib. Passa ax= per disegnare nei tuoi axes, oppure tieni l'ax che pandas restituisce.

AttivitàCodice
Colonne di un DataFrame nei tuoi axesdf.plot(x="month", y="sales", ax=ax)
Grafico a barre di un riepilogo per gruppodf.groupby("city")["sales"].sum().plot.bar(ax=ax)
Continuare a personalizzare il grafico di pandasax = df.plot(x="month", y="sales") ax.set_title("Sales")
Colonne direttamente in Matplotlibax.plot(df["month"], df["sales"])

Matplotlib 3.11: vecchie forme e cosa scrivere ora

Il codice copiato da tutorial più vecchi può dare errore o avvisi in Matplotlib 3.11. Usa invece le forme della colonna Matplotlib 3.11.

AttivitàMatplotlib 3.11Vecchia forma
Etichette del box plotax.boxplot([data, data * 2], tick_labels=["A", "B"])labels=["A", "B"]
Box plot o violin plot orizzontaleax.boxplot(data, orientation="horizontal")vert=False
Ottenere una colormapplt.colormaps["viridis"]plt.cm.get_cmap("viridis")
Stile seabornplt.style.use("seaborn-v0_8")plt.style.use("seaborn")

Il codice Matplotlib che ti serve per trasformare i dati in un grafico chiaro, raggruppato per attività: figure e axes, tipi di grafico, linee e colori, titoli e legende, assi e tick, subplot e layout, stili e grafici da pandas. Ogni riga è un breve snippet da incollare, con una riga che spiega cosa fa.

Tutto usa lo stile a oggetti (fig, ax = plt.subplots(), poi i metodi su ax) ed è scritto per Matplotlib 3.11, la versione che usa Coddy. Le forme più vecchie, come labels= in boxplot, compaiono solo nell'ultima tabella, accanto a cosa scrivere al loro posto. Gli esempi usano x = np.linspace(0, 10, 50), y = np.sin(x) e un campione di valori normali chiamato data. Sei alle prime armi con Python? Parti dal Python cheat sheet, e tieni a portata di mano anche i cheat sheet di pandas, NumPy e scikit-learn.

FAQ sul cheat sheet di Matplotlib

Questo cheat sheet di Matplotlib è gratuito?
Sì. Questo cheat sheet di Matplotlib è completamente gratuito e non serve registrarsi. Salvalo nei preferiti o stampalo in PDF dal browser, e tornaci ogni volta che ti serve la chiamata esatta per una legenda, una griglia di subplot o una barra dei colori.
Qual è la differenza tra plt e ax?
plt.plot() disegna sugli axes correnti, comodo per un singolo grafico. fig, ax = plt.subplots() ti dà la figure e gli axes come oggetti, quindi ax.plot() disegna sempre esattamente dove vuoi. Usa lo stile ax per tutto ciò che ha più di un grafico e per il codice che vuoi conservare.
Come cambio la dimensione della figure?
Passa figsize in pollici quando crei la figure: fig, ax = plt.subplots(figsize=(10, 5)). Per cambiare il valore predefinito di tutte le figure, imposta plt.rcParams["figure.figsize"] = (10, 5). La dimensione in pixel di un file salvato è figsize per dpi.
Come salvo un grafico ad alta risoluzione?
Chiama fig.savefig("chart.png", dpi=300, bbox_inches="tight"). Un dpi più alto dà un PNG più nitido, e bbox_inches="tight" elimina i margini vuoti. Per la stampa o le slide, salva in SVG o PDF, che restano nitidi a qualsiasi dimensione.
Perché titoli ed etichette dei miei subplot si sovrappongono?
Crea la figure con layout="constrained", come in plt.subplots(2, 2, layout="constrained"), e Matplotlib farà spazio a titoli, etichette e barre dei colori. Su una figure già esistente, chiama fig.tight_layout() dopo aver disegnato.
Quale versione di Matplotlib copre questo cheat sheet?
Matplotlib 3.11, la versione che usa Coddy. Le chiamate rimosse o rinominate nelle versioni più recenti, come labels= in boxplot (ora tick_labels=) e plt.cm.get_cmap (ora plt.colormaps[...]), sono nell'ultima tabella accanto a cosa scrivere al loro posto.
Posso eseguire codice Matplotlib online?
Sì. Il playground Matplotlib gratuito esegue Python con Matplotlib, NumPy, pandas e scikit-learn nel browser e disegna le tue figure accanto all'output, così puoi incollare qualsiasi snippet di questo cheat sheet e vedere il grafico senza installare nulla. Il corso di Machine Learning di Coddy usa questi grafici per esplorare i dati prima di addestrare un modello.
Illustrazione dei linguaggi di programmazione di Coddy

Impara Matplotlib con Coddy

INIZIA