Menu
CoddyTech

Matplotlib Cheat Sheet: ściąga z Matplotlib

Ostatnia aktualizacja

Figure i axes

Figure to cały obraz. Axes to jeden wykres w jego środku, a prawie każde wywołanie poniżej to metoda na ax.

ZadanieKod
Import pyplotimport matplotlib.pyplot as plt
Jedna figura z jednym wykresemfig, ax = plt.subplots()
Rozmiar w calachfig, ax = plt.subplots(figsize=(8, 4))
Rysowanie na axesax.plot(x, y)
Pokaż figuręplt.show()
Zapis jako ostry PNGfig.savefig("chart.png", dpi=150, bbox_inches="tight")
Zapis jako grafika wektorowafig.savefig("chart.svg"), fig.savefig("chart.pdf")
Przezroczyste tłofig.savefig("chart.png", transparent=True)
Zamknij figurę, by zwolnić pamięćplt.close(fig)
Szybki styl pyplot dla jednego wykresuplt.plot(x, y) plt.title("Quick look") plt.show()

Typy wykresów

ZadanieKod
Wykres liniowyax.plot(x, y)
Wykres punktowyax.scatter(x, y, s=20, alpha=0.7)
Punkty kolorowane wartością, z paskiem kolorówpoints = ax.scatter(x, y, c=y, cmap="viridis") fig.colorbar(points, ax=ax)
Wykres słupkowyax.bar(cats, a)
Wykres słupkowy poziomyax.barh(cats, a)
Słupki skumulowaneax.bar(cats, a, label="2025") ax.bar(cats, b, bottom=a, label="2026")
Słupki zgrupowanepos = 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)
Histogramax.hist(data, bins=30)
Wykres pudełkowyax.boxplot([data, data * 2], tick_labels=["A", "B"])
Wykres skrzypcowyax.violinplot([data, data * 2])
Wykres kołowyax.pie([40, 35, 25], labels=cats, autopct="%1.0f%%")
Pas między dwiema krzywymiax.fill_between(x, y - 0.2, y + 0.2, alpha=0.3)
Słupki błędówax.errorbar([1, 2, 3], [4, 5, 3], yerr=[0.5, 0.3, 0.6], fmt="o", capsize=4)
Wykres schodkowyax.step(x, y, where="mid")
Mapa ciepła tablicy 2Dimage = ax.imshow(np.random.default_rng(0).random((5, 5)), cmap="magma") fig.colorbar(image, ax=ax)
Wypełniony wykres konturowyX, Y = np.meshgrid(x, x) ax.contourf(X, Y, np.sin(X) * np.cos(Y), levels=20)
Gęstość wielu punktówax.hexbin(data, data + np.random.default_rng(1).normal(size=200), gridsize=20)
Pozioma lub pionowa linia odniesieniaax.axhline(0, color="gray", linestyle="--"), ax.axvline(5)
Zacieniowany zakresax.axvspan(2, 4, alpha=0.2)

Linie, markery i kolory

ZadanieKod
Kolor, grubość i styl liniiax.plot(x, y, color="tab:red", linewidth=2, linestyle="--")
Markery na punktachax.plot(x, y, marker="o", markersize=4)
Krótki format w stringuax.plot(x, y, "g--o")
Przezroczystośćax.plot(x, y, alpha=0.5)
Style linii"-", "--", "-.", ":"
Kody markerów"o", "s", "^", "x", ".", "*"
Sposoby podania koloru"tab:blue", "C1", "#1f77b4", (0.2, 0.4, 0.6)
n kolorów z mapy kolorówcolors = plt.colormaps["viridis"](np.linspace(0, 1, 5))
Własny cykl kolorówax.set_prop_cycle(color=["#0b7285", "#e8590c", "#5f3dc4"])
Słupki z obrysem i kreskowaniemax.bar(cats, a, color="white", edgecolor="black", hatch="//")

Tytuły, etykiety i legendy

ZadanieKod
Tytuł i opisy osiax.set_title("Sales"), ax.set_xlabel("Month"), ax.set_ylabel("EUR")
Wszystko w jednym wywołaniuax.set(title="Sales", xlabel="Month", ylabel="EUR")
Legenda z etykiet liniiax.plot(x, y, label="sin") ax.legend()
Pozycja i kolumny legendyax.legend(loc="upper right", ncols=2, frameon=False)
Legenda poza wykresemax.legend(loc="center left", bbox_to_anchor=(1, 0.5))
Tekst w punkcie danychax.text(5, 0.5, "note")
Adnotacja ze strzałkąax.annotate("peak", xy=(1.57, 1), xytext=(3, 1.2), arrowprops=dict(arrowstyle="->"))
Wartości na słupkachbars = ax.bar(cats, a) ax.bar_label(bars)
Tytuł całej figuryfig.suptitle("Q1 report")
Wzory matematyczne w etykietachax.set_xlabel(r"$\alpha$ (rad)")

Osie, znaczniki i skale

ZadanieKod
Zakresy osiax.set_xlim(0, 10), ax.set_ylim(bottom=0)
Skala logarytmicznaax.set_yscale("log")
Wybór znaczników i ich etykietax.set_xticks([0, 5, 10], labels=["start", "middle", "end"])
Obrót etykiet znacznikówax.tick_params(axis="x", labelrotation=45)
Linie siatkiax.grid(True, alpha=0.3)
Oś w procentachfrom matplotlib.ticker import PercentFormatter ax.yaxis.set_major_formatter(PercentFormatter(1.0))
Separator tysięcyax.yaxis.set_major_formatter("{x:,.0f}")
Ukryj górną i prawą ramkęax.spines[["top", "right"]].set_visible(False)
Druga oś y po prawejax2 = ax.twinx() ax2.plot(x, y * 100, color="tab:orange")
Ta sama skala na obu osiachax.set_aspect("equal")
Odwróć ośax.invert_yaxis()
Całkowicie ukryj osieax.axis("off")
Czytelne etykiety datfig.autofmt_xdate()

Subploty i układ

plt.subplots(rows, cols) zwraca tablicę NumPy z axes. Indeksuj ją jak zwykłą tablicę.

ZadanieKod
Siatka wykresówfig, axs = plt.subplots(2, 2, figsize=(8, 6))
Rysowanie na jednym z nichaxs[0, 1].plot(x, y)
Pętla po wszystkichfor ax in axs.flat: ax.grid(True)
Wspólna oś dla wykresówfig, axs = plt.subplots(1, 3, sharey=True)
Odstępy bez nachodzeniafig, axs = plt.subplots(2, 2, layout="constrained")
Usuń nachodzenie po rysowaniufig.tight_layout()
Kolumny o różnej szerokościfig, axs = plt.subplots(1, 2, width_ratios=[3, 1])
Nazwany układ z szerokim panelemfig, axd = plt.subplot_mosaic([["top", "top"], ["left", "right"]]) axd["top"].plot(x, y)
Mały wykres wewnątrz wykresuinset = ax.inset_axes([0.6, 0.6, 0.35, 0.35])
Ukryj pusty panelaxs[0].axis("off")

Style i ustawienia domyślne

ZadanieKod
Wbudowany stylplt.style.use("ggplot")
Lista stylówplt.style.available
Wygląd seaborn bez seabornplt.style.use("seaborn-v0_8-whitegrid")
Styl tylko dla jednej figurywith plt.style.context("dark_background"): fig, ax = plt.subplots()
Domyślny rozmiar czcionkiplt.rcParams["font.size"] = 12
Domyślny rozmiar i rozdzielczość figuryplt.rcParams["figure.figsize"] = (8, 4), plt.rcParams["figure.dpi"] = 120
Powrót do ustawień domyślnychplt.style.use("default")
Popularne mapy kolorów: sekwencyjne, rozbieżne, szare"viridis", "coolwarm", "Greys"

Wykresy z pandas

pandas rysuje za pomocą Matplotlib. Przekaż ax=, żeby rysować na własnych axes, albo zachowaj ax, które zwraca pandas.

ZadanieKod
Kolumny DataFrame'u na twoich axesdf.plot(x="month", y="sales", ax=ax)
Wykres słupkowy podsumowania grupdf.groupby("city")["sales"].sum().plot.bar(ax=ax)
Dalsze stylowanie wykresu z pandasax = df.plot(x="month", y="sales") ax.set_title("Sales")
Kolumny prosto do Matplotlibax.plot(df["month"], df["sales"])

Matplotlib 3.11: stare zapisy i co pisać teraz

Kod skopiowany ze starszych tutoriali może w Matplotlib 3.11 rzucić błąd albo ostrzeżenie. Używaj zapisów z kolumny Matplotlib 3.11.

ZadanieMatplotlib 3.11Stary zapis
Etykiety wykresu pudełkowegoax.boxplot([data, data * 2], tick_labels=["A", "B"])labels=["A", "B"]
Poziomy wykres pudełkowy lub skrzypcowyax.boxplot(data, orientation="horizontal")vert=False
Pobranie mapy kolorówplt.colormaps["viridis"]plt.cm.get_cmap("viridis")
Styl seabornplt.style.use("seaborn-v0_8")plt.style.use("seaborn")

Kod Matplotlib, który zamienia dane w czytelny wykres, pogrupowany według zadań: figure i axes, typy wykresów, linie i kolory, tytuły i legendy, osie i znaczniki, subploty i układ, style oraz wykresy z pandas. Każdy wiersz to krótki fragment kodu do wklejenia i jedno zdanie o tym, co robi.

Wszystko tutaj używa stylu obiektowego (fig, ax = plt.subplots(), a potem metody na ax) i jest napisane dla Matplotlib 3.11, wersji, której używa Coddy. Starsze zapisy, takie jak labels= w boxplot, pojawiają się tylko w ostatniej tabeli, obok tego, co pisać zamiast nich. Przykłady używają x = np.linspace(0, 10, 50), y = np.sin(x) i próbki wartości z rozkładu normalnego o nazwie data. Dopiero zaczynasz z Pythonem? Zajrzyj do ściągi z Pythona, a obok tej ściągi trzymaj też ściągi z pandas, NumPy i scikit-learn.

FAQ: ściąga z Matplotlib

Czy ta ściąga z Matplotlib jest darmowa?
Tak. Ta ściąga z Matplotlib jest całkowicie darmowa i nie wymaga rejestracji. Dodaj ją do zakładek albo wydrukuj do PDF z przeglądarki i wracaj, kiedy tylko potrzebujesz dokładnego wywołania dla legendy, siatki subplotów czy paska kolorów.
Czym różni się plt od ax?
plt.plot() rysuje na bieżących axes, co jest wygodne przy pojedynczym wykresie. fig, ax = plt.subplots() daje ci figurę i axes jako obiekty, więc ax.plot() zawsze rysuje dokładnie tam, gdzie chcesz. Używaj stylu z ax wszędzie tam, gdzie jest więcej niż jeden wykres, i w kodzie, który zostanie na dłużej.
Jak zmienić rozmiar figury?
Podaj figsize w calach przy tworzeniu figury: fig, ax = plt.subplots(figsize=(10, 5)). Żeby zmienić wartość domyślną dla każdej figury, ustaw plt.rcParams["figure.figsize"] = (10, 5). Rozmiar zapisanego pliku w pikselach to figsize razy dpi.
Jak zapisać wykres w wysokiej rozdzielczości?
Wywołaj fig.savefig("chart.png", dpi=300, bbox_inches="tight"). Wyższe dpi daje ostrzejszy PNG, a bbox_inches="tight" przycina puste marginesy. Do druku lub prezentacji zapisz SVG albo PDF, które są ostre w każdym rozmiarze.
Dlaczego tytuły i etykiety subplotów na siebie nachodzą?
Utwórz figurę z layout="constrained", na przykład plt.subplots(2, 2, layout="constrained"), a Matplotlib zrobi miejsce na tytuły, etykiety i paski kolorów. Na istniejącej figurze wywołaj fig.tight_layout() po narysowaniu.
Którą wersję Matplotlib obejmuje ta ściąga?
Matplotlib 3.11, wersję, której używa Coddy. Wywołania, które nowsze wersje usunęły lub przemianowały, takie jak labels= w boxplot (teraz tick_labels=) i plt.cm.get_cmap (teraz plt.colormaps[...]), są w ostatniej tabeli obok tego, co pisać zamiast nich.
Czy mogę uruchomić kod Matplotlib online?
Tak. Darmowy Matplotlib playground uruchamia Pythona z Matplotlib, NumPy, pandas i scikit-learn w przeglądarce i rysuje twoje figury obok wyniku, więc możesz wkleić dowolny fragment z tej ściągi i zobaczyć wykres bez instalowania czegokolwiek. Kurs Machine Learning w Coddy używa tych wykresów do eksploracji danych przed trenowaniem modelu.
Ilustracja języków programowania w Coddy

Naucz się języka Matplotlib z Coddy

ZACZNIJ