🗺️ Python & CBS

Python ile Choropleth Harita Nasıl Çizilir? Folium & GeoPandas

📅 7 Haziran 2026 ⏱️ 9 dk okuma 🗺️ Python & CBS

Choropleth harita, coğrafi bölgeleri (il, ilçe, ülke vb.) sayısal bir değere göre renklendirerek verinin mekansal dağılımını görselleştiren bir harita türüdür. Türkiye'de il bazında nüfus yoğunluğu, işsizlik oranı veya yağış miktarı gibi verileri bölge bölge karşılaştırmak için ideal bir yöntemdir. Bu rehberde iki farklı Python kütüphanesiyle choropleth harita oluşturacağız: statik haritalar için GeoPandas + Matplotlib, interaktif web haritaları için ise Folium.

Choropleth Harita Nedir?

Choropleth kelimesi Yunanca "çokluk" ve "yer" anlamına gelen sözcüklerden türetilmiştir. Bu harita türünde her coğrafi birim (bölge, il, ilçe) tek bir renk tonu ile temsil edilir; renk yoğunluğu ya da tonu o birimin sayısal değerini yansıtır. Örneğin koyudan açığa giden bir renk skalasında koyu renkli iller yüksek değere, açık renkli iller düşük değere işaret eder.

Gereksinimler ve Kurulum

Bu rehberde kullanacağımız kütüphaneler:

  • geopandas — coğrafi veri okuma ve işleme
  • matplotlib — statik harita çizimi
  • folium — interaktif web haritası
  • pandas — veri birleştirme

pip install geopandas matplotlib folium pandas

Türkiye Shapefile: Türkiye il sınırları için GADM (gadm.org) → Turkey → Level 1 seçeneğinden ücretsiz GeoPackage veya Shapefile indirebilirsiniz. Koordinat sistemi WGS84 (EPSG:4326) olarak gelir.

1. GeoPandas ile Statik Choropleth Harita

GeoPandas'ın plot() metodu, column parametresiyle doğrudan choropleth harita oluşturur. Aşağıdaki örnek Türkiye il sınırlarını yükler, nüfus verisiyle birleştirir ve renk kodlamalı harita üretir:

import geopandas as gpd import pandas as pd import matplotlib.pyplot as plt # Coğrafi veri iller = gpd.read_file("turkiye_iller.gpkg") # Örnek sayısal veri (gerçek projede CSV'den okuyun) veri = pd.DataFrame({ "il_adi": iller["NAME_1"], "issizlik": [8.2, 12.5, 7.1, 15.3, 9.8] # örnek değerler }) # Birleştirme iller = iller.merge(veri, on="il_adi", how="left") # Choropleth harita fig, ax = plt.subplots(1, 1, figsize=(14, 8)) iller.plot( column="issizlik", cmap="YlOrRd", # sarıdan kırmızıya renk skalası legend=True, legend_kwds={"label": "İşsizlik Oranı (%)"}, edgecolor="white", linewidth=0.4, ax=ax, missing_kwds={"color": "lightgrey"} ) ax.set_title("Türkiye İl Bazında İşsizlik Oranları", fontsize=15, fontweight="bold") ax.axis("off") plt.tight_layout() plt.savefig("issizlik_haritasi.png", dpi=150, bbox_inches="tight") plt.show()

Renk Skalası (cmap) Seçimi

Matplotlib'de onlarca hazır renk skalası mevcuttur. Choropleth haritalar için en sık kullanılanlar:

cmapKullanım Alanı
YlOrRdYoğunluk, sıcaklık, risk gibi tek yönlü veriler
Blues / GreensYağış, orman alanı, su kaynakları
RdYlGnOlumlu–olumsuz karşılaştırma (yeşil=iyi, kırmızı=kötü)
coolwarmOrtalama etrafında sapma gösteren veriler
viridisRenk körü dostu, genel amaçlı

2. Folium ile İnteraktif Choropleth Harita

Folium, Leaflet.js üzerine kurulu bir Python kütüphanesidir ve tarayıcıda çalışan interaktif haritalar üretir. Kullanıcılar haritayı yakınlaştırabilir, bölgelerin üzerine gelerek değerleri görebilir.

import folium import geopandas as gpd import pandas as pd import json # Coğrafi veri → GeoJSON formatına dönüştür iller = gpd.read_file("turkiye_iller.gpkg").to_crs("EPSG:4326") iller_json = json.loads(iller.to_json()) # Sayısal veri veri = pd.read_csv("nufus_2025.csv") # il_adi, nufus sütunları # Harita merkezi: Türkiye m = folium.Map(location=[39.0, 35.0], zoom_start=6, tiles="CartoDB positron") # Choropleth katmanı folium.Choropleth( geo_data=iller_json, name="Nüfus", data=veri, columns=["il_adi", "nufus"], key_on="feature.properties.NAME_1", fill_color="YlOrRd", fill_opacity=0.7, line_opacity=0.3, legend_name="Nüfus (2025)", nan_fill_color="lightgrey" ).add_to(m) # Tooltip: üzerine gelinince il adı ve değer göster folium.GeoJson( iller_json, tooltip=folium.GeoJsonTooltip( fields=["NAME_1"], aliases=["İl:"], localize=True ) ).add_to(m) folium.LayerControl().add_to(m) m.save("turkiye_nufus.html")

key_on parametresi: Choropleth katmanının GeoJSON'daki alan adını veri tablosundaki sütunla eşleştirmesi için key_on="feature.properties.ALAN_ADI" doğru girilmelidir. GeoJSON'daki alan adını kontrol etmek için iller_json["features"][0]["properties"] komutunu çalıştırın.

3. Sınıf Aralıkları (Bins) ile Choropleth

Verinin dağılımı çarpık olduğunda eşit aralıklı renklendirme yanıltıcı olabilir. Bu durumda scheme parametresiyle quantile veya natural breaks sınıflandırması tercih edilir:

# GeoPandas ile quantile sınıflandırması (mapclassify gerekir) # pip install mapclassify iller.plot( column="nufus", scheme="quantiles", # eşit sayıda il her sınıfta k=5, # 5 sınıf cmap="Blues", legend=True, ax=ax )

4. Birden Fazla Değişkeni Karşılaştırma

Aynı figürde birden fazla choropleth harita yan yana göstermek için Matplotlib'in subplot yapısı kullanılır:

fig, axes = plt.subplots(1, 2, figsize=(20, 7)) iller.plot(column="nufus", cmap="Blues", legend=True, ax=axes[0], edgecolor="white", linewidth=0.3) axes[0].set_title("Nüfus Dağılımı") axes[0].axis("off") iller.plot(column="issizlik", cmap="YlOrRd", legend=True, ax=axes[1], edgecolor="white", linewidth=0.3) axes[1].set_title("İşsizlik Oranı") axes[1].axis("off") plt.suptitle("Türkiye İl Bazında Göstergeler", fontsize=16, fontweight="bold") plt.tight_layout() plt.savefig("karsilastirma.png", dpi=150)

GeoPandas vs Folium: Hangisini Seçmeli?

KriterGeoPandas + MatplotlibFolium
Çıktı türüStatik PNG/PDFİnteraktif HTML
Kullanıcı etkileşimiYokZoom, hover, tıklama
Rapor/yayınİdealWeb için ideal
ÖzelleştirmeÇok yüksekOrta
Büyük veri performansıİyiYavaşlayabilir

CBS ve Harita Görselleştirme Projeniz için Profesyonel Destek

Python ile choropleth haritalar, mekansal analizler ve coğrafi veri görselleştirme konularında uzman kadromuzdan destek alın.

Ücretsiz Danışmanlık Alın

Kaynaklar

  • GeoPandas Development Team. (2026). GeoPandas Documentation. geopandas.org
  • Folium Development Team. (2026). Folium Documentation. python-visualization.github.io/folium
  • Rey, S. J., Arribas-Bel, D., & Wolf, L. J. (2023). Geographic Data Science with Python.