Menu
CoddyTech

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.

İşlemKod
pyplot'u içe aktarimport matplotlib.pyplot as plt
Tek grafikli bir figurefig, ax = plt.subplots()
Boyutu inç olarak ayarlafig, ax = plt.subplots(figsize=(8, 4))
Axes üzerine çizax.plot(x, y)
Figure'ı gösterplt.show()
Net bir PNG olarak kaydetfig.savefig("chart.png", dpi=150, bbox_inches="tight")
Vektörel grafik olarak kaydetfig.savefig("chart.svg"), fig.savefig("chart.pdf")
Şeffaf arka planfig.savefig("chart.png", transparent=True)
Belleği boşaltmak için figure'ı kapatplt.close(fig)
Tek grafik için hızlı pyplot stiliplt.plot(x, y) plt.title("Quick look") plt.show()

Grafik türleri

İşlemKod
Çizgi grafiğiax.plot(x, y)
Dağılım grafiğiax.scatter(x, y, s=20, alpha=0.7)
Değere göre renkli dağılım, renk çubuğuylapoints = ax.scatter(x, y, c=y, cmap="viridis") fig.colorbar(points, ax=ax)
Çubuk grafikax.bar(cats, a)
Yatay çubuk grafikax.barh(cats, a)
Yığılmış çubuklarax.bar(cats, a, label="2025") ax.bar(cats, b, bottom=a, label="2026")
Gruplanmış çubuklarpos = 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)
Kutu grafiğiax.boxplot([data, data * 2], tick_labels=["A", "B"])
Violin grafiğiax.violinplot([data, data * 2])
Pasta grafiğiax.pie([40, 35, 25], labels=cats, autopct="%1.0f%%")
İki eğri arasındaki bantax.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ğiax.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ğiX, Y = np.meshgrid(x, x) ax.contourf(X, Y, np.sin(X) * np.cos(Y), levels=20)
Çok sayıda noktanın yoğunluğuax.hexbin(data, data + np.random.default_rng(1).normal(size=200), gridsize=20)
Yatay ya da dikey referans çizgisiax.axhline(0, color="gray", linestyle="--"), ax.axvline(5)
Bir aralığı gölgelendirax.axvspan(2, 4, alpha=0.2)

Çizgiler, işaretçiler ve renkler

İşlemKod
Renk, kalınlık ve çizgi stiliax.plot(x, y, color="tab:red", linewidth=2, linestyle="--")
Noktalarda işaretçiax.plot(x, y, marker="o", markersize=4)
Kısa format metniax.plot(x, y, "g--o")
Saydamlıkax.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 renkcolors = plt.colormaps["viridis"](np.linspace(0, 1, 5))
Kendi renk döngünax.set_prop_cycle(color=["#0b7285", "#e8590c", "#5f3dc4"])
Kenarlıklı ve taralı çubuklarax.bar(cats, a, color="white", edgecolor="black", hatch="//")

Başlıklar, etiketler ve legend'lar

İşlemKod
Başlık ve eksen etiketleriax.set_title("Sales"), ax.set_xlabel("Month"), ax.set_ylabel("EUR")
Hepsi tek çağrıdaax.set(title="Sales", xlabel="Month", ylabel="EUR")
Çizgi etiketlerinden legendax.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 legendax.legend(loc="center left", bbox_to_anchor=(1, 0.5))
Bir veri konumuna metinax.text(5, 0.5, "note")
Oklu açıklamaax.annotate("peak", xy=(1.57, 1), xytext=(3, 1.2), arrowprops=dict(arrowstyle="->"))
Çubuklarda değer etiketleribars = ax.bar(cats, a) ax.bar_label(bars)
Tüm figure için başlıkfig.suptitle("Q1 report")
Etiketlerde matematikax.set_xlabel(r"$\alpha$ (rad)")

Eksenler, tick'ler ve ölçekler

İşlemKod
Eksen sınırlarıax.set_xlim(0, 10), ax.set_ylim(bottom=0)
Logaritmik ölçekax.set_yscale("log")
Tick'leri ve etiketlerini seçax.set_xticks([0, 5, 10], labels=["start", "middle", "end"])
Tick etiketlerini döndürax.tick_params(axis="x", labelrotation=45)
Izgara çizgileriax.grid(True, alpha=0.3)
Yüzde eksenifrom 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ığı gizleax.spines[["top", "right"]].set_visible(False)
Sağda ikinci bir y ekseniax2 = ax.twinx() ax2.plot(x, y * 100, color="tab:orange")
İki eksende aynı ölçekax.set_aspect("equal")
Ekseni ters çevirax.invert_yaxis()
Eksenleri tamamen gizleax.axis("off")
Okunaklı tarih etiketlerifig.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ş.

İşlemKod
Grafik ızgarasıfig, axs = plt.subplots(2, 2, figsize=(8, 6))
Birinin üzerine çizaxs[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şluklarfig, axs = plt.subplots(2, 2, layout="constrained")
Çizdikten sonra çakışmaları düzeltfig.tight_layout()
Farklı genişlikte sütunlarfig, axs = plt.subplots(1, 2, width_ratios=[3, 1])
Geniş panelli adlandırılmış yerleşimfig, axd = plt.subplot_mosaic([["top", "top"], ["left", "right"]]) axd["top"].plot(x, y)
Grafik içinde küçük grafikinset = ax.inset_axes([0.6, 0.6, 0.35, 0.35])
Boş paneli gizleaxs[0].axis("off")

Stiller ve varsayılanlar

İşlemKod
Hazır bir stil kullanplt.style.use("ggplot")
Stilleri listeleplt.style.available
seaborn olmadan seaborn görünümüplt.style.use("seaborn-v0_8-whitegrid")
Yalnızca tek figure için stilwith plt.style.context("dark_background"): fig, ax = plt.subplots()
Varsayılan yazı boyutuplt.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önplt.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.

İşlemKod
DataFrame sütunlarını kendi axes'ine çizdf.plot(x="month", y="sales", ax=ax)
Grup özetinin çubuk grafiğidf.groupby("city")["sales"].sum().plot.bar(ax=ax)
pandas'ın çizdiğini biçimlendirmeye devam etax = df.plot(x="month", y="sales") ax.set_title("Sales")
Sütunları doğrudan Matplotlib'e verax.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.

İşlemMatplotlib 3.11Eski kullanım
Kutu grafiği etiketleriax.boxplot([data, data * 2], tick_labels=["A", "B"])labels=["A", "B"]
Yatay kutu ya da violin grafiğiax.boxplot(data, orientation="horizontal")vert=False
Colormap alplt.colormaps["viridis"]plt.cm.get_cmap("viridis")
Seaborn stiliplt.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?
Evet. Bu Matplotlib hile sayfası tamamen ücretsiz ve kayıt gerektirmez. Yer imlerine ekle ya da tarayıcından PDF olarak yazdır; bir legend, subplot ızgarası ya da renk çubuğu için tam çağrıya ihtiyacın olduğunda geri gel.
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?
Figure'ı oluştururken 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?
Figure'ı 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?
Coddy'nin kullandığı sürüm olan Matplotlib 3.11. Yeni sürümlerin kaldırdığı ya da adını değiştirdiği çağrılar, örneğin 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.
Matplotlib kodunu online çalıştırabilir miyim?
Evet. Ücretsiz Matplotlib playground, Python'u Matplotlib, NumPy, pandas ve scikit-learn ile birlikte tarayıcında çalıştırır ve figure'larını çıktının yanında çizer; bu hile sayfasındaki herhangi bir kod parçasını yapıştırıp hiçbir şey kurmadan grafiği görebilirsin. Coddy'nin Machine Learning kursu, bir modeli eğitmeden önce veriyi keşfetmek için bu grafikleri kullanır.
Coddy programlama dilleri çizimi

Coddy ile Matplotlib öğren

BAŞLA