Krutzo 1
Krutzo
shrpnl 1
shrpnl
Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Altın Konu Matplotlib’te Legend’i Ayrı Bir Alan Üzerine Atma (Subplot Düzeni)

devemoji

Hüküm haktan yanadır.
Telefon Numarası Onaylanmış Üye
Yönetici
Katılım
4 Ocak 2016
Konular
191
Mesajlar
901
Çözüm
7
Online süresi
1mo 29d
Reaksiyon Skoru
891
Altın Konu
73
Başarım Puanı
214
MmoLira
7,078
DevLira
18
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Bir süre grafikle uğraştıktan sonra şunu fark ediyorsun, legend dediğin şey bazen grafiğin üstünü kapatmaya başlıyor. Özellikle aynı figure içinde birden fazla subplot varsa iş iyice karışıyor. O noktada legend’i grafiklerin içine değil, ayrı bir alana koyma fikri devreye giriyor. İlk başta gereksiz gibi duruyor ama büyük veri grafiğinde baya fark ettiriyor.

Olay aslında basit: figure içinde zaten birkaç eksen var (subplot’lar), bir de ekstra boş bir alan açıp legend’i oraya taşıyorsun. Ama bunu yaparken önemli bir detay var, figure layout’unu önceden ayarlamak gerekiyor. Yoksa legend için yer açayım derken grafiklerin kendisi sıkışıyor. rcParams tarafında figure.subplot.left, right, top, bottom gibi değerlerle oynanıyor.

Bu biraz eski oyunlarda HUD yerleşimi ayarlamak gibi, her şeyi sıkıştırmadan dengeli tutman gerekiyor. İlk örnekte 2x2 subplot var. Her bir panelde sinüs bazlı rastgele grafikler çiziliyor ama dikkat edilen şey şu, legend tek tek subplot’larda tutulmuyor. Bunun yerine tüm line objeleri toplanıp ayrı bir eksene taşınıyor. fig.add_axes() ile figure’un sağ tarafına ince bir alan açılıyor ve legend oraya basılıyor. Sonra da o eksenin koordinatları tamamen kapatılıyor, sadece legend kalıyor.


Ekran görüntüsü 2026-04-14 235256.png



Burada küçük ama önemli bir detay var, line objeleri direkt toplanabiliyor ama bu her grafik tipi için aynı değil. Mesela plot() çıktısı düz line döndürürken, bar() gibi şeyler container döndürüyor. Yani direkt toplama işi her zaman çalışmıyor. O yüzden bazen listeye append() yapmak gerekiyor, yoksa legend boş ya da hatalı çıkabiliyor. Bu farkı ilk gördüğümde biraz kafam karışmıştı çünkü aynı “grafik” gibi duruyor ama arka planda davranış farklı. İkinci örnekte iş biraz daha büyüyor, hem sin hem cos bar chart’ları üst üste çiziliyor. Burada her subplot içinde iki farklı bar seti var ama legend yine tek bir yerde toplanıyor. Burada dikkat çekici nokta şu, BarContainer diye bir şey dönüyor.

Yani tek bir çizgi değil, bir grup obje. Bu yüzden legend tarafında direkt tek eleman gibi davranmıyor, içine bakmak gerekiyor. Sonuçta yine aynı yöntem kullanılıyor, tüm bar container’lar bir listeye ekleniyor ve en sonunda ayrı axes üzerine legend basılıyor. O alan da frame’siz hale getirilip sadece yazılar bırakılıyor. Böylece grafikler temiz kalıyor, legend de kenarda bağımsız duruyor.

Genel olarak bakınca bu yöntem biraz “UI düzenleme” işi gibi. Grafik çizmekten çok, ekranı nasıl böleceğini ve bilgiyi nereye koyacağını planlıyorsun. Özellikle çoklu subplot ve karma veri olduğunda legend’i ayrı alana taşımak gerçekten işleri rahatlatıyor.

 
Son düzenleme:
eline sağlık
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst