Şekil ve Eksen Mimarisi
Figure-Axes-Artist hiyerarşisini öğrenin, plt.subplots() ile grafikler oluşturun ve durum bilgisi tutmayan API'lerle nesne yönelimli API'leri ayırt edin.
Şekil ve Eksen Mimarisi, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
Matplotlib Mimarisi Neden Öğrenilir?
Pandas ve Seaborn, arka planda Matplotlib kullanır. Matplotlib'in nesne hiyerarşisini anlamak, bir grafiğin genel tuvalinden tek tek işaretlere kadar her yönünü denetlemenizi ve birden çok grafiği tek bir şekil içinde birleştirmenizi sağlar. Şekil-Eksenler modelini anlamadan grafikleri özelleştirmek, kısa sürede hangi işlevin çağrılacağını tahmin etmeye çalıştığınız, can sıkıcı bir uğraşa dönüşür.
Şekil: Tuval
Bir Şekil, en dış kapsayıcıdır; pencerenin veya görüntü dosyasının tamamını temsil eder. Bir veya daha fazla Eksenler nesnesini (gerçek grafik alanlarını), ayrıca bir başlığı, ortak açıklamaları ve boş alanı içerir. Bir Şekli plt.figure() ile veya dolaylı olarak plt.subplots() aracılığıyla oluşturursunuz. Şekil üzerinde ayarlanan özelliklerin çoğu tüm tuvali etkiler: boyut, arka plan rengi ve genel başlık.
import matplotlib.pyplot as plt
import numpy as np
# Create a Figure with a specific size
fig = plt.figure(figsize=(8, 4)) # width=8 inches, height=4 inches
print(type(fig)) # matplotlib.figure.Figure
print('Figure size:', fig.get_size_inches())
plt.close() # close to avoid display in scriptsEksenler: Çizimin Yapıldığı Yer
Bir Eksenler nesnesi, bir Şekil içindeki tek bir grafik alanıdır. x eksenini, y eksenini, işaretleri, kılavuz çizgilerini ve tüm görsel öğeleri (çizgiler, çubuklar, dağılım noktaları) içerir. Çizim çağrılarının çoğu, bir Eksenler nesnesinin yöntemleridir: ax.plot(), ax.bar(), ax.scatter(). Bir Şekil, alt grafiklerden oluşan bir ızgara şeklinde düzenlenmiş birden çok Eksenler içerebilir.
fig, ax = plt.subplots() # Creates Figure + one Axes
print(type(ax)) # matplotlib.axes.Axes
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x)) # plot on the Axes
plt.tight_layout()
# plt.show()
plt.close()plt.subplots(): Şekil ve Eksenleri Birlikte Oluşturma
plt.subplots(nrows, ncols), bir veya daha fazla Eksen içeren bir Şekli ızgara düzeninde oluşturmak için önerilen yöntemdir. Tek bir alt grafik için (fig, ax), birden çok alt grafik içinse (fig, axes_array) demeti döndürür. figsize parametresi, tuvalin inç cinsinden toplam boyutunu ayarlar. Açıklık sağlamak için sonucu her zaman adlandırılmış değişkenlere ayırın.
# Single plot
fig, ax = plt.subplots(figsize=(6, 4))
# 2 rows, 1 column
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(6, 8))
# 2 rows, 2 columns
fig, axes = plt.subplots(2, 2, figsize=(10, 8))
ax_top_left = axes[0, 0]
ax_top_right = axes[0, 1]
print('axes shape:', axes.shape) # (2, 2)
plt.close('all')Nesne Tabanlı ve Durum Tabanlı API
Matplotlib'in iki kullanım biçimi vardır. Durum tabanlı (pyplot) API, plt.plot(), plt.xlabel() vb. kullanır ve 'geçerli' eksenler üzerinde işlem yapar; hızlı etkileşimli keşif için kullanışlıdır. Nesne tabanlı (OO) API ise yöntemleri ax nesneleri üzerinde açıkça çağırır: ax.plot(), ax.set_xlabel(). Hangi eksenlerin değiştirildiğini açıkça belirttiği için OO API, üretim kodlarında ve çok panelli şekillerde özellikle tercih edilir.
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
# Stateful API (convenient but fragile)
# plt.plot(x, y)
# plt.xlabel('x')
# plt.title('Squares')
# Object-oriented API (preferred)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('x')
ax.set_title('Squares')
plt.close()Sanatçılar: Yapı Taşları
Bir Matplotlib grafiğinde görünen her şey bir Sanatçıdır: Şekil, Eksenler, çizgiler, metin, yamalar (çubuklar için dikdörtgenler) ve işaretçiler. Şekil-Eksenler-Sanatçı hiyerarşisi, en dış kapsayıcıdan en küçük görsel öğeye doğru ilerler. Bu hiyerarşiyi anlamak, herhangi bir öğeyi program aracılığıyla bulup değiştirmenize yardımcı olur; örneğin grafik çizildikten sonra belirli bir çubuğun rengini değiştirebilirsiniz.
fig, ax = plt.subplots()
line, = ax.plot([1, 2, 3], [1, 4, 9], color='blue', linewidth=2)
# Introspect the hierarchy
print('Figure:', type(fig))
print('Axes:', type(ax))
print('Line Artist:', type(line))
print('Line color:', line.get_color())
plt.close()Eksen Nesneleri: XAxis ve YAxis
Her Eksenler, Axis ile karıştırılmaması gereken iki Axis nesnesi içerir: ax.xaxis ve ax.yaxis. Bunlar işaretleri, işaret etiketlerini ve omurgayı (görünen çizgiyi) denetler. Eksen sınırlarını ax.set_xlim() ve ax.set_ylim() ile ayarlayabilir, işaret sıklığını ax.set_xticks() ile denetleyebilir ve etiketleri ax.xaxis.set_major_formatter() ile biçimlendirebilirsiniz.
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [10, 40, 30, 70])
ax.set_xlim(0, 5)
ax.set_ylim(0, 80)
ax.set_xticks([1, 2, 3, 4])
ax.set_xticklabels(['Q1', 'Q2', 'Q3', 'Q4'])
ax.set_xlabel('Quarter')
ax.set_ylabel('Revenue')
plt.close()Çok Panelli Grafiklerde Paylaşılan Eksenler
Bir alt grafik ızgarası oluştururken, paneller arasındaki eksen ölçeklerini birbirine bağlamak için plt.subplots() işlevine sharex=True veya sharey=True iletin. Böylece bir alt grafiği yakınlaştırmak veya kaydırmak, aynı ekseni paylaşan tüm panelleri otomatik olarak günceller. Bu, her panelde aynı x ekseni aralığının gösterilmesi gereken birden çok grup arasındaki zaman serilerini karşılaştırmak için gereklidir.
import numpy as np
x = np.arange(10)
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True, figsize=(6, 5))
ax1.plot(x, x**2, color='blue')
ax1.set_title('Squares')
ax2.plot(x, x**3, color='red')
ax2.set_title('Cubes')
fig.suptitle('Powers of x') # shared figure title
plt.tight_layout()
plt.close()tight_layout() ile Boşlukları Ayarlama
plt.tight_layout() (veya fig.tight_layout()), etiketler, başlıklar ve işaretler arasındaki örtüşmeyi en aza indirmek için alt grafik parametrelerini otomatik olarak ayarlar. Bunu plt.show() veya fig.savefig() çağrısından hemen önce kullanın. Daha ayrıntılı denetim için alt grafikler arasındaki dikey ve yatay boşluğu elle ayarlamak üzere plt.subplots_adjust(hspace=, wspace=) kullanın.
fig, axes = plt.subplots(2, 2, figsize=(10, 8))
for i, ax in enumerate(axes.flat):
ax.plot([1, 2, 3], [i, i+1, i+2])
ax.set_title(f'Panel {i+1}')
ax.set_xlabel('x axis label')
ax.set_ylabel('y axis label')
fig.suptitle('Grid of Plots', y=1.02)
plt.tight_layout() # prevents overlapping labels
plt.close()subplots() İşlevinden Eksenlere Erişme
plt.subplots(nrows, ncols) birden çok eksen döndürdüğünde, bunlar (nrows, ncols) şeklindeki bir NumPy dizisinde paketlenir. Bunları herhangi bir iki boyutlu dizide olduğu gibi indeksleyin: ilk satır ve ikinci sütun için axes[0, 1]. Izgaranın şeklinden bağımsız olarak tüm eksenler üzerinde satır öncelikli sırayla yinelemek için axes.flat kullanın; bu, aynı biçimlendirmeyi her panele uygulamak için çok kullanışlıdır.
fig, axes = plt.subplots(2, 3, figsize=(12, 6))
# Access by row, column
axes[0, 0].set_title('Top Left')
axes[1, 2].set_title('Bottom Right')
# Iterate over all axes
for ax in axes.flat:
ax.set_xlabel('Time')
ax.set_ylabel('Value')
plt.tight_layout()
plt.close()Kullanılmayan Eksenleri Kaldırma
Alt grafiklerden oluşan bir ızgara oluşturduğunuzda ancak her paneli kullanmadığınızda, boş eksenlerde çerçeve kenarlıkları görünmeye devam eder. Kullanılmayan eksenleri gizlemek veya kaldırmak için ax.set_visible(False) ya da fig.delaxes(ax) çağrısını kullanın. Yaygın bir yaklaşım, axes.flat üzerinde yineleyerek çizdiğiniz veri serilerinin sayısını aşan tüm panelleri gizlemek ve şekli düzenli tutmaktır.
fig, axes = plt.subplots(2, 3, figsize=(12, 6))
data_panels = 4 # only 4 plots needed in a 2x3 grid
for i, ax in enumerate(axes.flat):
if i < data_panels:
ax.plot([1, 2, 3], [i, i+1, i+2])
ax.set_title(f'Panel {i+1}')
else:
ax.set_visible(False) # hide extra panels
plt.tight_layout()
plt.close()Kısa Kontrol
Bu derste öğrendiğiniz Matplotlib Şekil ve Eksenler mimarisi konusundaki anlayışınızı sınayın.
Ders Özeti
Bu derste şunları öğrendiniz: Figure tüm tuvaldir, Axes ise bu tuvalin içindeki tek bir çizim alanıdır; plt.subplots() ikisini birlikte oluşturur ve (fig, ax) döndürür; nesne yönelimli API (ax.plot(), ax.set_xlabel()) durum bilgili pyplot API'sine kıyasla tercih edilir; ayrıca tight_layout(), çok panelli şekillerde etiketlerin üst üste binmesini önler. Sırada, stil üzerinde tam denetim sağlayarak çizgi ve dağılım grafikleri oluşturacağız.
Sıkça Sorulan Sorular
“Şekil ve Eksen Mimarisi” dersi ücretsiz mi?
Evet — “Şekil ve Eksen Mimarisi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
“Şekil ve Eksen Mimarisi” dersinde ne öğreneceğim?
Figure-Axes-Artist hiyerarşisini öğrenin, plt.subplots() ile grafikler oluşturun ve durum bilgisi tutmayan API'lerle nesne yönelimli API'leri ayırt edin. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Şekil ve Eksen Mimarisi” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Şekil ve Eksen Mimarisi
- Çizgi ve Dağılım Grafikleri
- Çubuk Grafikler ve Histogramlar
- Etiketler, Başlıklar ve Şekilleri Kaydetme