Python İle Plotly Kütüphanesi Kullanarak İnteraktif Harita Görselleştirme Nasıl Yapılır?

Python İle Plotly Kütüphanesi Kullanarak İnteraktif Harita Görselleştirme Nasıl Yapılır?
Python İle Plotly Kütüphanesi Kullanarak İnteraktif Harita Görselleştirme Nasıl Yapılır?

Gereksinimler ve Ortam Kurulumu

Projeye başlamadan önce bilgisayarınızda Python 3.10 veya daha güncel bir sürümün yüklü olduğundan emin olmalısınız. Plotly, veri manipülasyonu için genellikle Pandas kütüphanesiyle birlikte çalışır. Gerekli paketleri yüklemek için terminal veya komut satırınıza aşağıdaki komutu yazarak kurulumu gerçekleştirebilirsiniz.

pip install plotly pandas

Kurulum tamamlandıktan sonra, kütüphanelerin başarıyla içe aktarıldığını doğrulamak için boş bir Python dosyası oluşturup import plotly.express as px satırını çalıştırarak test edebilirsiniz. Herhangi bir hata almazsanız, geliştirme ortamınız hazır demektir.

Veri Setini Hazırlama ve Pandas ile İşleme

İnteraktif haritalar oluştururken verinin doğru formatta olması kritik önem taşır. Plotly, genellikle ISO ülke kodları veya enlem-boylam koordinatları ile çalışır. Bir veri seti hazırlarken, verilerinizin temiz ve eksiksiz olduğundan emin olmalısınız.

import pandas as pd

# Örnek veri seti oluşturma
data = {
    'Ulke': ['Turkiye', 'Almanya', 'Fransa', 'Japonya'],
    'Deger': [100, 150, 120, 200],
    'ISO_Kod': ['TUR', 'DEU', 'FRA', 'JPN']
}

df = pd.DataFrame(data)
print(df.head())

Yukarıdaki kod bloğu, harita üzerinde işaretlenecek basit bir veri çerçevesi oluşturur. ISO_Kod sütunu, Plotly'nin dünya haritası üzerinde ülkeleri tanımasını sağlayan standartlaştırılmış kodlardır.

Plotly Express ile Temel Choropleth Haritası Oluşturma

Choropleth haritaları, bölgelerin değerlerine göre renklendirildiği harita türüdür. Plotly Express (px), bu tür haritaları sadece birkaç satır kodla oluşturmanıza olanak tanır. Aşağıdaki örnekte, oluşturduğumuz veriyi kullanarak basit bir dünya haritası çiziyoruz.

import plotly.express as px

fig = px.choropleth(df, 
                    locations="ISO_Kod", 
                    color="Deger", 
                    hover_name="Ulke", 
                    title="Ülkelere Göre Değer Dağılımı")

fig.show()

Bu kod, locations parametresi ile ülke kodlarını, color parametresi ile renklendirilecek değeri belirler. fig.show() komutu, tarayıcınızda interaktif bir harita penceresi açacaktır.

Noktasal Haritalar (Scatter Geo) ile Koordinat Görselleştirme

Eğer verileriniz belirli bir bölgeyi değil de spesifik koordinatları (enlem ve boylam) içeriyorsa, scatter_geo fonksiyonu en iyi tercihtir. Bu yöntem, özellikle şehir bazlı veya mağaza lokasyonu gibi verileri göstermek için kullanılır.

df_coords = pd.DataFrame({
    'Sehir': ['Istanbul', 'Ankara', 'Izmir'],
    'Lat': [41.0082, 39.9334, 38.4192],
    'Lon': [28.9784, 32.8597, 27.1287],
    'Nufus': [15000000, 5000000, 4000000]
})

fig = px.scatter_geo(df_coords, 
                     lat='Lat', 
                     lon='Lon', 
                     size='Nufus', 
                     hover_name='Sehir', 
                     projection='natural earth')

fig.show()

Burada size parametresi, nüfus verisine göre noktaların büyüklüğünü belirler. projection parametresi ise haritanın dünya üzerindeki izdüşümünü değiştirerek daha estetik bir görünüm sağlar.

Harita Görselleştirmede Karşılaştırmalı Yöntemler

İhtiyacınıza göre doğru harita türünü seçmek, verinin anlaşılırlığını doğrudan etkiler. Aşağıdaki tablo, Plotly ile kullanılan temel yöntemlerin avantajlarını özetlemektedir.

Yöntem Kullanım Alanı Avantajı
Choropleth Ülke/Bölge bazlı veriler Bölgesel farkları net gösterir.
Scatter Geo Noktasal/Koordinat verileri Spesifik konumları hassas gösterir.
Density Mapbox Yoğunluk analizleri Kümelenmeleri (heatmap) vurgular.

Gelişmiş Özelleştirmeler ve Etkileşim Yönetimi

Haritalarınızı daha profesyonel hale getirmek için renk paletlerini, başlıkları ve yazı tiplerini özelleştirebilirsiniz. Plotly'nin update_layout fonksiyonu, haritanın arka planından kenar boşluklarına kadar her şeyi kontrol etmenizi sağlar.

fig.update_layout(
    geo=dict(
        showframe=False,
        showcoastlines=True,
        projection_type='orthographic'
    ),
    title_font_size=24
)
fig.show()

Bu örnekte projection_type='orthographic' kullanarak haritayı küresel bir dünya modeli haline getirdik. Bu tür görsel dokunuşlar, sunumlarınızın kalitesini artıracaktır.

Güvenlik Uyarısı: Harita verilerinizi dışa aktarırken veya web üzerinde yayınlarken, hassas koordinat bilgilerini (örneğin özel mülk veya kişisel veri içeren konumlar) anonimleştirdiğinizden emin olun. Veri gizliliği, yazılım geliştirme süreçlerinin ayrılmaz bir parçasıdır.

Sıkça Sorulan Sorular

Plotly haritalarında kendi harita verimi (GeoJSON) kullanabilir miyim?

Evet, geojson parametresini kullanarak kendi özel harita sınırlarınızı (örneğin ilçe bazlı haritalar) Plotly'ye tanıtabilirsiniz.

Harita dosyasını nasıl web sitesine gömebilirim?

fig.write_html("harita.html") komutunu kullanarak haritanızı bir HTML dosyası olarak kaydedebilir ve bu dosyayı iframe etiketiyle web sitenize ekleyebilirsiniz.

Plotly haritaları çevrimdışı çalışır mı?

Evet, Plotly kütüphanesi yerel olarak çalıştığı için internet bağlantısı olmadan da grafiklerinizi oluşturabilir ve görüntüleyebilirsiniz.

Çok büyük veri setlerinde performans sorunu yaşar mıyım?

Binlerce veri noktasıyla çalışırken tarayıcı performansı düşebilir. Bu durumda veriyi kümelemek (aggregation) veya scattermapbox gibi daha performanslı katmanlar kullanmak önerilir.

Harita üzerinde renk skalasını nasıl değiştiririm?

color_continuous_scale parametresini kullanarak Plotly'nin sunduğu hazır renk paletlerinden (örneğin px.colors.sequential.Viridis) birini seçebilirsiniz.

Plotly Haritalarında Hata Ayıklama ve Yaygın Sorun Giderme

Plotly ile harita görselleştirme süreçlerinde, özellikle GeoJSON verileriyle çalışırken veya koordinat sistemlerini eşleştirirken bazı teknik aksaklıklarla karşılaşabilirsiniz. En sık karşılaşılan sorun, haritanın boş görünmesi veya verilerin yanlış konumlara yerleşmesidir.

Koordinat ve Projeksiyon Uyumsuzlukları

Harita verilerinizde enlem (latitude) ve boylam (longitude) değerlerinin doğru sütun isimleriyle eşleştiğinden emin olun. Plotly, varsayılan olarak WGS84 projeksiyonunu kullanır. Eğer verileriniz farklı bir projeksiyon sistemindeyse, harita üzerinde verileriniz görünmeyecektir.

Hata ayıklama için şu kontrol listesini kullanabilirsiniz:

  • Veri Tipi Kontrolü: Koordinat sütunlarınızın float tipinde olduğundan emin olun. String değerler harita motoru tarafından işlenemez.
  • Eksik Değerler: df.dropna() kullanarak boş koordinat verilerini temizleyin.
  • GeoJSON ID Eşleşmesi: Choropleth haritalarında locations parametresi ile GeoJSON içindeki id veya properties değerlerinin birebir eşleştiğini print(df['column'].unique()) komutuyla doğrulayın.
# Hata ayıklama için veri tipi kontrolü
import pandas as pd

# Koordinatların sayısal olduğundan emin olun
df['lat'] = pd.to_numeric(df['lat'], errors='coerce')
df['lon'] = pd.to_numeric(df['lon'], errors='coerce')

# Eksik verileri temizle
df_clean = df.dropna(subset=['lat', 'lon'])
print(f"Temizlenen veri sayısı: {len(df) - len(df_clean)}")

Büyük Veri Setleri İçin Performans Optimizasyonu

Binlerce noktayı içeren haritalar, tarayıcı üzerinde performans sorunlarına yol açabilir. Plotly, bu tür durumlarda Scattergl (WebGL tabanlı) kullanarak GPU hızlandırmasından faydalanmanızı sağlar. Standart Scattergeo yerine Scattergl kullanarak tarayıcıyı dondurmadan binlerce veriyi görselleştirebilirsiniz.

WebGL ile Performans Artırma

Aşağıdaki örnekte, standart bir harita çizimi yerine WebGL tabanlı yöntemin nasıl uygulanacağını görebilirsiniz:

import plotly.graph_objects as go

# Scattergeo yerine Scattergl kullanarak performans artışı
fig = go.Figure(go.Scattergl(
    lat = df['lat'],
    lon = df['lon'],
    mode = 'markers',
    marker = dict(size=5, color='blue')
))

fig.update_layout(
    geo = dict(projection_type = 'natural earth'),
    margin = {"r":0,"t":0,"l":0,"b":0}
)
fig.show()

Ayrıca, çok büyük veri setlerinde harita üzerindeki etkileşimi hızlandırmak için hoverinfo özelliğini 'skip' olarak ayarlayabilir veya sadece gerekli sütunları içeren bir alt veri seti (subset) kullanarak görselleştirme yükünü azaltabilirsiniz. Harita katmanlarını basitleştirmek (GeoJSON dosyasındaki gereksiz detayları kaldırmak) de tarayıcı tarafındaki render süresini ciddi oranda düşürecektir.

Sonuç

Python ile Plotly kullanarak interaktif harita görselleştirme yapmak, veri analizi süreçlerinizi bir üst seviyeye taşıyacak oldukça etkili bir beceridir. Bu rehberde, temel kurulumdan gelişmiş görselleştirme tekniklerine kadar haritalama dünyasının kapılarını araladık. Artık kendi veri setlerinizi kullanarak anlamlı, etkileşimli ve profesyonel haritalar oluşturabilirsiniz.

Bir sonraki adım olarak, Plotly Dash kütüphanesini inceleyerek bu haritaları canlı veri akışıyla güncellenen tam teşekküllü web panellerine (dashboard) dönüştürmeyi deneyebilirsiniz. Sürekli pratik yapmak, kütüphanenin sunduğu derinliği keşfetmenizi sağlayacaktır.

Bu yazıya tepkinizi paylaşın:
Zeynep Kaya

Ev yönetimi ve kendin yap (DIY) projeleri konusunda uzmanlaşmış bir içerik üreticisiyim. Detaylı rehberler hazırlayarak okuyucuların evdeki küçük sorunları profesyonel yardıma gerek duymadan çözmelerini sağlıyorum.

Yorumlar (0)

Yorum Yaz