Temalar & Facet'ler (Bölümlendirme)
Dynlib'in çizim sistemi, tutarlı ve yayına hazır figürler oluşturmak için güçlü tema ve facet (bölümlendirme) yetenekleri sağlar. Bu rehber, stil oluşturmak için plot.theme kullanımını ve çok panelli düzenler için plot.fig/plot.facet kullanımını kapsar.
Temalara Genel Bakış
Dynlib'deki temalar, tüm çizimlerin görsel görünümünü kontrol ederek figürler arasında tutarlılık sağlar. Tema sistemi şunları yönetir:
- Yazı tipi boyutları ve aileleri
- Çizgi genişlikleri ve işaretçi (marker) stilleri
- Renk paletleri
- Izgara (grid) ve arka plan ayarları
- Boşluklar ve kenar boşlukları
Temalar küresel olarak uygulanır ve değiştirilene kadar sonraki tüm çizimleri etkiler.
Yerleşik Hazır Ayarlar (Presets)
Dynlib, farklı kullanım durumları için optimize edilmiş birkaç önceden tanımlı tema içerir:
- notebook: Dengeli stillendirme ile etkileşimli Jupyter not defterleri için varsayılan tema.
- paper: Yayınlar için temiz tema; ince ızgaralar devre dışı bırakılmış ve yazı tipi boyutları optimize edilmiştir.
- talk: Sunumlar için yüksek kontrastlı tema; daha büyük öğeler ve daha kalın çizgiler içerir.
- dark: Daha iyi görünürlük için ayarlanmış renklere sahip koyu arka planlı tema.
- mono: Gri tonlamalı renkler kullanan monokrom tema.
Temaları Kullanma
Çizim senaryonuzun başında bir tema ayarlayın:
from dynlib.plot import theme
# Bir hazır ayar kullan
theme.use("paper")
# Veya bir hazır ayarın üzerine özelleştirme yap
theme.use("notebook", tokens={"scale": 1.2, "grid": False})
Temaları Özelleştirme
Hazır ayarları değiştirmeden tema ayarlarını modifiye edebilirsiniz:
# Ayarları geçici olarak düzenle
theme.update(tokens={"fontsize_title": 16, "line_w": 2.0})
# Veya kapsamlı değişiklikler için push/pop kullan
theme.push(tokens={"palette": "mono"})
# ... çizimleri oluştur ...
theme.pop() # Önceki temaya geri döner
Renk Paletleri
Dynlib birden fazla renk paletini destekler:
- classic: Standart Matplotlib renkleri
- cbf: Renk körü dostu palet (erişilebilirlik için önerilir)
- mono: Gri tonlamalı palet
Özel paletleri kaydedin:
theme.register_palette("my_colors", ["#ff0000", "#00ff00", "#0000ff"])
theme.use("notebook", tokens={"palette": "my_colors"})
Tema Jetonları (Tokens)
Temalar, bireysel stil özelliklerini belirten jetonlar tarafından kontrol edilir. Temel jetonlar şunlardır:
- scale: Genel boyut çarpanı
- fontsize_*: Farklı öğeler için yazı tipi boyutları (temel, etiket, başlık vb.)
- line_w: Çizgi genişliği
- marker_size: İşaretçi boyutu
- grid: Izgara çizgilerinin gösterilip gösterilmeyeceği
- palette: Renk paleti adı
- background: "light" (açık) veya "dark" (koyu)
Mevcut jeton değerlerine erişim:
Figür Izgaraları ve Düzenleri
Dynlib, temalarla sorunsuz çalışan figür düzenleri oluşturmak için üst düzey yardımcılar sağlar.
Temel Figür Oluşturma
from dynlib.plot import fig
# Tek çizim
ax = fig.single(title="Grafiğim")
# Alt çizimlerden (subplots) oluşan ızgara
axes = fig.grid(rows=2, cols=3, title="Parametre Taraması")
# 3B çizim
ax_3d = fig.single3D(title="3B Yörünge")
# Alt çizimleri saran (wrap) esnek ızgara
axes = fig.wrap(n=7, cols=3) # 3x3 ızgara oluşturur, son 2 ekseni gizler
Tüm fig yardımcıları özelleştirme için parametreler kabul eder:
size: (genişlik, yükseklik) demeti olarak figür boyutuscale: Boyut çarpanısharex/sharey: Eksenlerin paylaşılıp paylaşılmayacağıtitle: Figür başlığı
Çizim ile Entegrasyon
Oluşturulan eksenleri çizim fonksiyonlarına iletin:
from dynlib.plot import fig, series
ax = fig.single()
series.plot(x=time, y=signal, ax=ax, label="Sinyal")
Çok Panelli Figürler için Facetleme (Faceting)
Facetleme, ızgaraları otomatik olarak oluşturur ve veri kategorileri üzerinde yineleme yapar; bu parametre taramaları veya gruplandırılmış veriler için mükemmeldir.
Temel Facetleme
from dynlib.plot import facet, series
# Farklı parametreler için veriler
data = {
"r=2.5": trajectory_r25,
"r=3.0": trajectory_r30,
"r=3.5": trajectory_r35,
}
# Facet'lenmiş çizim oluştur
for ax, param in facet.wrap(data.keys(), cols=2, title="Bifurkasyon Analizi"):
traj = data[param]
series.plot(x=time, y=traj, ax=ax, title=param)
facet.wrap fonksiyonu:
- Bir anahtar (kategoriler) yinelenebilir nesnesi alır
- Belirtilen sayıda sütuna sahip bir ızgara oluşturur
- Yineleme için (eksen, anahtar) çiftleri üretir
- Düzeni otomatik olarak yönetir ve kullanılmayan eksenleri gizler
Facetleme Parametreleri
cols: Izgaradaki sütun sayısıtitle: Genel figür başlığısize,scale: Figür boyutlandırmasharex/sharey: Eksen paylaşımı
İleri Seviye Facetleme Örneği
import numpy as np
from dynlib.plot import facet, series, theme
# Parametre taraması
r_values = np.linspace(2.8, 4.0, 12)
theme.use("paper")
for ax, r in facet.wrap(r_values, cols=4, title="Lojistik Harita Bifurkasyonları"):
# Bu r değeri için yörünge simüle et
x = 0.1
traj = [x]
for _ in range(100):
x = r * x * (1 - x)
traj.append(x)
series.plot(x=range(len(traj)), y=traj, ax=ax, title=f"r={r:.1f}")
En İyi Uygulamalar
-
Temaları erken ayarlayın: Herhangi bir figür oluşturmadan önce senaryonuzun başında temaları uygulayın.
-
Tutarlı paletler kullanın: Daha iyi erişilebilirlik için "cbf" gibi renk körü dostu paletleri tercih edin.
-
Facetlemeden yararlanın: Parametre taramaları veya gruplandırılmış veriler için facetleme, tekrar eden kodları (boilerplate) azaltır.
-
Düşünerek özelleştirin: Tamamen yeni temalar oluşturmak yerine küçük ayarlamalar için
theme.update()kullanın. -
Değişiklikleri kapsamlandırın: Geçici tema modifikasyonları için
theme.push()/pop()kullanın. -
Uygun şekilde boyutlandırın: Farklı çıktılar (ekran veya baskı) için figür boyutlarını ayarlamak adına
scaleparametresini veya tema jetonlarını kullanın.
Temalar ve facetleme, ister keşifsel analiz ister yayın figürleri için olsun, dynlib çizimlerinizin profesyonel ve tutarlı olmasını sağlamak için birlikte çalışır.