Matplotlib Cheat Sheet (Hile Sayfası)
Son güncelleme
Figure ve axes
Figure, görüntünün tamamıdır. Axes ise onun içindeki tek bir grafiktir ve aşağıdaki çağrıların neredeyse hepsi ax üzerinde bir metottur.
| İşlem | Kod |
|---|---|
| pyplot'u içe aktar | import matplotlib.pyplot as plt |
| Tek grafikli bir figure | fig, ax = plt.subplots() |
| Boyutu inç olarak ayarla | fig, ax = plt.subplots(figsize=(8, 4)) |
| Axes üzerine çiz | ax.plot(x, y) |
| Figure'ı göster | plt.show() |
| Net bir PNG olarak kaydet | fig.savefig("chart.png", dpi=150, bbox_inches="tight") |
| Vektörel grafik olarak kaydet | fig.savefig("chart.svg"), fig.savefig("chart.pdf") |
| Şeffaf arka plan | fig.savefig("chart.png", transparent=True) |
| Belleği boşaltmak için figure'ı kapat | plt.close(fig) |
| Tek grafik için hızlı pyplot stili | plt.plot(x, y)
plt.title("Quick look")
plt.show() |
Grafik türleri
| İşlem | Kod |
|---|---|
| Çizgi grafiği | ax.plot(x, y) |
| Dağılım grafiği | ax.scatter(x, y, s=20, alpha=0.7) |
| Değere göre renkli dağılım, renk çubuğuyla | points = ax.scatter(x, y, c=y, cmap="viridis")
fig.colorbar(points, ax=ax) |
| Çubuk grafik | ax.bar(cats, a) |
| Yatay çubuk grafik | ax.barh(cats, a) |
| Yığılmış çubuklar | ax.bar(cats, a, label="2025")
ax.bar(cats, b, bottom=a, label="2026") |
| Gruplanmış çubuklar | pos = 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) |
| Histogram | ax.hist(data, bins=30) |
| Kutu grafiği | ax.boxplot([data, data * 2], tick_labels=["A", "B"]) |
| Violin grafiği | ax.violinplot([data, data * 2]) |
| Pasta grafiği | ax.pie([40, 35, 25], labels=cats, autopct="%1.0f%%") |
| İki eğri arasındaki bant | ax.fill_between(x, y - 0.2, y + 0.2, alpha=0.3) |
| Hata çubukları | ax.errorbar([1, 2, 3], [4, 5, 3], yerr=[0.5, 0.3, 0.6], fmt="o", capsize=4) |
| Basamak grafiği | ax.step(x, y, where="mid") |
| 2D dizinin ısı haritası | image = ax.imshow(np.random.default_rng(0).random((5, 5)), cmap="magma")
fig.colorbar(image, ax=ax) |
| Dolgulu kontur grafiği | X, Y = np.meshgrid(x, x)
ax.contourf(X, Y, np.sin(X) * np.cos(Y), levels=20) |
| Çok sayıda noktanın yoğunluğu | ax.hexbin(data, data + np.random.default_rng(1).normal(size=200), gridsize=20) |
| Yatay ya da dikey referans çizgisi | ax.axhline(0, color="gray", linestyle="--"), ax.axvline(5) |
| Bir aralığı gölgelendir | ax.axvspan(2, 4, alpha=0.2) |
Çizgiler, işaretçiler ve renkler
| İşlem | Kod |
|---|---|
| Renk, kalınlık ve çizgi stili | ax.plot(x, y, color="tab:red", linewidth=2, linestyle="--") |
| Noktalarda işaretçi | ax.plot(x, y, marker="o", markersize=4) |
| Kısa format metni | ax.plot(x, y, "g--o") |
| Saydamlık | ax.plot(x, y, alpha=0.5) |
| Çizgi stilleri | "-", "--", "-.", ":" |
| İşaretçi kodları | "o", "s", "^", "x", ".", "*" |
| Renk belirtme yolları | "tab:blue", "C1", "#1f77b4", (0.2, 0.4, 0.6) |
| Colormap'ten n renk | colors = plt.colormaps["viridis"](np.linspace(0, 1, 5)) |
| Kendi renk döngün | ax.set_prop_cycle(color=["#0b7285", "#e8590c", "#5f3dc4"]) |
| Kenarlıklı ve taralı çubuklar | ax.bar(cats, a, color="white", edgecolor="black", hatch="//") |
Başlıklar, etiketler ve legend'lar
| İşlem | Kod |
|---|---|
| Başlık ve eksen etiketleri | ax.set_title("Sales"), ax.set_xlabel("Month"), ax.set_ylabel("EUR") |
| Hepsi tek çağrıda | ax.set(title="Sales", xlabel="Month", ylabel="EUR") |
| Çizgi etiketlerinden legend | ax.plot(x, y, label="sin")
ax.legend() |
| Legend konumu ve sütunları | ax.legend(loc="upper right", ncols=2, frameon=False) |
| Grafiğin dışında legend | ax.legend(loc="center left", bbox_to_anchor=(1, 0.5)) |
| Bir veri konumuna metin | ax.text(5, 0.5, "note") |
| Oklu açıklama | ax.annotate("peak", xy=(1.57, 1), xytext=(3, 1.2), arrowprops=dict(arrowstyle="->")) |
| Çubuklarda değer etiketleri | bars = ax.bar(cats, a)
ax.bar_label(bars) |
| Tüm figure için başlık | fig.suptitle("Q1 report") |
| Etiketlerde matematik | ax.set_xlabel(r"$\alpha$ (rad)") |
Eksenler, tick'ler ve ölçekler
| İşlem | Kod |
|---|---|
| Eksen sınırları | ax.set_xlim(0, 10), ax.set_ylim(bottom=0) |
| Logaritmik ölçek | ax.set_yscale("log") |
| Tick'leri ve etiketlerini seç | ax.set_xticks([0, 5, 10], labels=["start", "middle", "end"]) |
| Tick etiketlerini döndür | ax.tick_params(axis="x", labelrotation=45) |
| Izgara çizgileri | ax.grid(True, alpha=0.3) |
| Yüzde ekseni | from matplotlib.ticker import PercentFormatter
ax.yaxis.set_major_formatter(PercentFormatter(1.0)) |
| Binlik ayırıcı | ax.yaxis.set_major_formatter("{x:,.0f}") |
| Üst ve sağ kenarlığı gizle | ax.spines[["top", "right"]].set_visible(False) |
| Sağda ikinci bir y ekseni | ax2 = ax.twinx()
ax2.plot(x, y * 100, color="tab:orange") |
| İki eksende aynı ölçek | ax.set_aspect("equal") |
| Ekseni ters çevir | ax.invert_yaxis() |
| Eksenleri tamamen gizle | ax.axis("off") |
| Okunaklı tarih etiketleri | fig.autofmt_xdate() |
Subplot'lar ve yerleşim
plt.subplots(rows, cols) axes'lerden oluşan bir NumPy dizisi döndürür. Ona bir dizi gibi indeksle eriş.
| İşlem | Kod |
|---|---|
| Grafik ızgarası | fig, axs = plt.subplots(2, 2, figsize=(8, 6)) |
| Birinin üzerine çiz | axs[0, 1].plot(x, y) |
| Hepsi üzerinde döngü | for ax in axs.flat:
ax.grid(True) |
| Grafikler arasında ekseni paylaş | fig, axs = plt.subplots(1, 3, sharey=True) |
| Çakışmayı önleyen boşluklar | fig, axs = plt.subplots(2, 2, layout="constrained") |
| Çizdikten sonra çakışmaları düzelt | fig.tight_layout() |
| Farklı genişlikte sütunlar | fig, axs = plt.subplots(1, 2, width_ratios=[3, 1]) |
| Geniş panelli adlandırılmış yerleşim | fig, axd = plt.subplot_mosaic([["top", "top"], ["left", "right"]])
axd["top"].plot(x, y) |
| Grafik içinde küçük grafik | inset = ax.inset_axes([0.6, 0.6, 0.35, 0.35]) |
| Boş paneli gizle | axs[0].axis("off") |
Stiller ve varsayılanlar
| İşlem | Kod |
|---|---|
| Hazır bir stil kullan | plt.style.use("ggplot") |
| Stilleri listele | plt.style.available |
| seaborn olmadan seaborn görünümü | plt.style.use("seaborn-v0_8-whitegrid") |
| Yalnızca tek figure için stil | with plt.style.context("dark_background"):
fig, ax = plt.subplots() |
| Varsayılan yazı boyutu | plt.rcParams["font.size"] = 12 |
| Varsayılan figure boyutu ve çözünürlüğü | plt.rcParams["figure.figsize"] = (8, 4), plt.rcParams["figure.dpi"] = 120 |
| Varsayılanlara dön | plt.style.use("default") |
| Yaygın colormap'ler: sıralı, ıraksak, gri | "viridis", "coolwarm", "Greys" |
pandas ile grafik
pandas çizimi Matplotlib ile yapar. Kendi axes'ine çizmek için ax= ver ya da pandas'ın döndürdüğü ax nesnesini sakla.
| İşlem | Kod |
|---|---|
| DataFrame sütunlarını kendi axes'ine çiz | df.plot(x="month", y="sales", ax=ax) |
| Grup özetinin çubuk grafiği | df.groupby("city")["sales"].sum().plot.bar(ax=ax) |
| pandas'ın çizdiğini biçimlendirmeye devam et | ax = df.plot(x="month", y="sales")
ax.set_title("Sales") |
| Sütunları doğrudan Matplotlib'e ver | ax.plot(df["month"], df["sales"]) |
Matplotlib 3.11: eski kullanımlar ve yerine yazman gerekenler
Eski eğitimlerden kopyalanan kod Matplotlib 3.11'de hata ya da uyarı verebilir. Onun yerine Matplotlib 3.11 sütunundaki kullanımları yaz.
| İşlem | Matplotlib 3.11 | Eski kullanım |
|---|---|---|
| Kutu grafiği etiketleri | ax.boxplot([data, data * 2], tick_labels=["A", "B"]) | labels=["A", "B"] |
| Yatay kutu ya da violin grafiği | ax.boxplot(data, orientation="horizontal") | vert=False |
| Colormap al | plt.colormaps["viridis"] | plt.cm.get_cmap("viridis") |
| Seaborn stili | plt.style.use("seaborn-v0_8") | plt.style.use("seaborn") |
Veriyi anlaşılır bir grafiğe dönüştürmek için gereken Matplotlib kodları, işe göre gruplanmış hâlde: figure ve axes, grafik türleri, çizgiler ve renkler, başlıklar ve legend'lar, eksenler ve tick'ler, subplot'lar ve yerleşim, stiller ve pandas ile grafik çizme. Her satırda yapıştırabileceğin kısa bir kod parçası ve ne yaptığını anlatan tek bir cümle var.
Buradaki her şey nesne yönelimli stili kullanır (fig, ax = plt.subplots(), ardından ax üzerindeki metotlar) ve Coddy'nin kullandığı sürüm olan Matplotlib 3.11 için yazıldı. boxplot içindeki labels= gibi eski kullanımlar yalnızca son tabloda, yerine yazman gerekenlerin yanında yer alır. Örnekler x = np.linspace(0, 10, 50), y = np.sin(x) ve data adında normal dağılımlı bir örneklem kullanır. Python'a yeni mi başlıyorsun? Önce Python hile sayfası ile başla, pandas, NumPy ve scikit-learn hile sayfalarını da bunun yanında açık tut.
Matplotlib hile sayfası hakkında sık sorulan sorular
Bu Matplotlib hile sayfası ücretsiz mi?
plt ile ax arasındaki fark nedir?
plt.plot() o anda etkin olan axes üzerine çizer; tek bir grafik için hızlıdır. fig, ax = plt.subplots() ise figure ve axes'i nesne olarak verir, böylece ax.plot() her zaman tam istediğin yere çizer. Birden fazla grafik içeren her şeyde ve saklayacağın kodda ax stilini kullan.Figure boyutunu nasıl değiştiririm?
figsize değerini inç olarak ver: fig, ax = plt.subplots(figsize=(10, 5)). Tüm figure'ların varsayılanını değiştirmek için plt.rcParams["figure.figsize"] = (10, 5) ayarla. Kaydedilen dosyanın piksel boyutu figsize çarpı dpi olur.Bir grafiği yüksek çözünürlükte nasıl kaydederim?
fig.savefig("chart.png", dpi=300, bbox_inches="tight") çağır. Daha yüksek bir dpi daha net bir PNG verir, bbox_inches="tight" ise boş kenar boşluklarını kırpar. Baskı ya da sunumlar için her boyutta net kalan SVG ya da PDF olarak kaydet.Subplot başlıklarım ve etiketlerim neden üst üste biniyor?
plt.subplots(2, 2, layout="constrained") örneğindeki gibi layout="constrained" ile oluştur; Matplotlib başlıklar, etiketler ve renk çubukları için yer açar. Var olan bir figure'da ise çizdikten sonra fig.tight_layout() çağır.Bu hile sayfası hangi Matplotlib sürümünü kapsıyor?
boxplot içindeki labels= (artık tick_labels=) ve plt.cm.get_cmap (artık plt.colormaps[...]), son tabloda yerine yazman gerekenlerin yanında yer alır.