Data Visualization

Matplotlib’de Çoklu Görüntüleri Etkin Bir Şekilde Gösterme

Spread the love

Matplotlib, görselleştirme oluşturmak için güçlü bir Python kütüphanesidir. Yaygın bir görev, karşılaştırma yapmak veya aynı verinin farklı yönlerini göstermek için tek bir şekilde birden fazla görüntüyü görüntülemektir. Bu makale, bunu başarmak için iki verimli yöntem sunmaktadır: add_subplot()‘ı yinelemeli olarak kullanma ve yeniden kullanılabilir bir fonksiyon oluşturma.

İçerik Tablosu

add_subplot() ile Yinelemeli Alt Grafik Oluşturma

Bu yaklaşım, görüntü sayısı dinamik olduğunda idealdir. add_subplot(nrows, ncols, index), satır, sütun ve geçerli alt grafiğin indeksini belirterek bir şekil içinde alt grafikler oluşturur.


import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import os

image_dir = "path/to/your/images"  # Resim dizininizi buraya yazın

image_files = [f for f in os.listdir(image_dir) if os.path.isfile(os.path.join(image_dir, f))]

if not image_files:
    print("Belirtilen dizinde resim bulunamadı.")
else:
    num_images = len(image_files)
    nrows = int(num_images**0.5)
    ncols = (num_images + nrows - 1) // nrows

    fig, axes = plt.subplots(nrows, ncols, figsize=(15, 10))
    axes = axes.ravel()

    for i, image_file in enumerate(image_files):
        image_path = os.path.join(image_dir, image_file)
        img = mpimg.imread(image_path)
        axes[i].imshow(img)
        axes[i].set_title(image_file)
        axes[i].axis('off')

    # Fazladan alt grafikleri kaldır
    for j in range(i + 1, len(axes)):
        fig.delaxes(axes[j])


    plt.tight_layout()
    plt.show()

Bu kod, resimler arasında yineleyerek, mpimg.imread() kullanarak okur ve alt grafiklerde görüntüler. plt.tight_layout(), üst üste binmeyi önler. `”path/to/your/images”` yerine kendi dizininizi yazmayı unutmayın. Kod, optimum düzen için satır ve sütunları dinamik olarak ayarlar ve boş alt grafikleri kaldırır.

Görüntü Gösterimi için Yeniden Kullanılabilir Fonksiyon

Daha iyi kod düzenlemesi ve yeniden kullanılabilirlik için, görüntü gösterim mantığını bir fonksiyon içine alın:


import matplotlib.pyplot as plt
import matplotlib.image as mpimg

def display_images(image_paths, titles=None, cols=3, figsize=(15, 10)):
    """Tek bir şekilde birden fazla görüntüyü görüntüler.

    Args:
        image_paths: Resim yollarının listesi.
        titles: (Opsiyonel) Başlıkların listesi.
        cols: Alt grafik ızgarasındaki sütun sayısı.
        figsize: Şekil boyutu.
    """
    num_images = len(image_paths)
    rows = (num_images + cols - 1) // cols
    fig, axes = plt.subplots(rows, cols, figsize=figsize)
    axes = axes.ravel()

    for i, image_path in enumerate(image_paths):
        img = mpimg.imread(image_path)
        axes[i].imshow(img)
        if titles:
            axes[i].set_title(titles[i])
        axes[i].axis('off')

    # Fazladan alt grafikleri kaldır
    for j in range(i + 1, len(axes)):
        fig.delaxes(axes[j])

    plt.tight_layout()
    plt.show()

# Örnek kullanım:
image_paths = ["path/to/image1.jpg", "path/to/image2.png", "path/to/image3.jpeg"]  # Resim yollarınızı buraya yazın
titles = ["Resim 1", "Resim 2", "Resim 3"]
display_images(image_paths, titles)

Bu fonksiyon, resim yollarını ve isteğe bağlı başlıkları kabul eder, alt grafik ızgarasını dinamik olarak hesaplar ve resimleri görüntüler. Yinelemeli yaklaşımdan daha esnek ve yeniden kullanılabilirdir. Matplotlib’i yüklemeyi unutmayın: pip install matplotlib.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir