Python'da Plotly ile Etkileşimli Grafik: Kod Örnekleriyle Adım Adım
Beceri rehberi

Python'da Plotly ile Etkileşimli Grafik: Kod Örnekleriyle Adım Adım

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

Plotly Express ile çizgi, çubuk ve dağılım grafiği çizin; renk, tooltip ve düzeni ayarlayıp grafiği HTML olarak paylaşmayı öğrenin.

Plotly Express ile ilk grafik

Plotly, grafikleri tarayıcıda etkileşimli çizen bir Python kütüphanesidir. Fare ile üzerine gelince değer gösterir, bölge seçerek yakınlaştırır, seriyi göstergeden açıp kapatır. En hızlı başlangıç yolu, tek satırda grafik üreten Plotly Express arayüzüdür. Elinizde pandas ile hazırlanmış bir tablo varsa, hangi sütunun x, hangisinin y ekseninde olacağını söylemek yeterlidir.

Örneğin tarih, bölge ve satış sütunları olan bir tablo için:

import plotly.express as px

fig = px.line(df, x="tarih", y="satis", color="bolge") fig.show()

color="bolge" bölge başına ayrı bir çizgi çizer ve göstergeyi otomatik oluşturur. Plotly belgelerindeki çizgi grafik örnekleri de aynı kalıbı kullanır: veri tablosu, x ve y sütunları, ayırıcı olarak color. Bu parametreleri anlamak, diğer grafik türlerinin çoğunu da açar.

Grafikten önce veriyi hazırlamak gerekir. Çoğu zaman ham tablo işlem satırlarından oluşur; aylık bölge toplamı için önce pandas ile gruplayıp toplamı alırsınız:

df["tarih"] = pd.to_datetime(df["tarih"]) aylik = df.groupby(["tarih", "bolge"], as_index=False)["satis"].sum()

Ardından grafik fonksiyonuna ham tablo değil bu özet tablo verilir. Sütun türlerini kontrol etmek, grafiğin ilk seferde doğru çıkmasının en kısa yoludur: tarih gerçek tarih türünde, satış sayısal türde olmalıdır.

Doğru grafik türünü seçmek

Plotly Express'te her grafik türü ayrı bir fonksiyondur ve parametre mantığı büyük oranda aynıdır. Seçim, sorduğunuz soruya bağlıdır: • Zaman içindeki değişim: px.line • Kategoriler arası karşılaştırma: px.bar • Sayısal değişkenler arasındaki ilişkisi: px.scatter • Değerlerin dağılımı: px.histogram ve px.box • Parçaların bütündeki payı: px.pie, ancak az sayıda dilimle

Örneğin aylık satışın bölgelere göre karşılaştırması için çubuk grafik, müşteri başına sipariş tutarının dağılımı için kutu grafiği uygundur. Soruyu önce yazın, grafik türünü sonra seçin. Pasta grafikte dilim sayısı artınca okunabilirlik düşer; bu durumda sıralı çubuk daha açık olur.

Renk, hover ve etkileşim ayarları

Etkileşimli grafiğin değeri tooltip'in ne söylediğine bağlıdır. Plotly belgelerine göre hover_name, tooltip başlığında kalın görünecek sütunu belirler; hover_data ise tooltip'e ek sütun ekler. Sözlük biçiminde False vererek bir sütunu tooltip'ten çıkarabilirsiniz.

fig = px.scatter( df, x="reklam_harcamasi", y="satis", color="bolge", hover_name="magaza", hover_data={"bolge": True, "reklam_harcamasi": False}, )

Birden çok seriyi aynı x değerinde karşılaştırmak için hover modunu değiştirmek faydalıdır:

fig.update_layout(hovermode="x unified")

Varsayılan mod en yakın noktayı gösterir. x unified seçildiğinde fare hangi x konumundaysa tüm serilerin değeri tek kutuda toplanır. Zaman serilerinde bu, okumayı belirgin biçimde kolaylaştırır.

Düzen ve stil: update_layout ve update_traces

Grafik üretildikten sonra iki yöntemle düzeltilir. update_layout, grafiğin tamamına ait ayarları değiştirir: başlık, eksen başlıkları, gösterge yeri, yazı boyutu. update_traces ise çizilen serilerin görünümünü değiştirir. Çizgi grafikte nokta işaretçilerini göstermek için markers=True parametresi ya da update_traces ile mode="lines+markers" kullanılabilir.

fig.update_layout( title="Bölgelere göre aylık satış", xaxis_title="Tarih", yaxis_title="Satış tutarı", ) fig.update_traces(mode="lines+markers")

Kurumsal rapor için ortak bir renk paleti ve yazı tipi belirleyip tüm grafiklere uygulamak, farklı kişilerin ürettiği grafiklerin tutarlı görünmesini sağlar. Başlığı konuyu değil sonucu söyleyecek biçimde yazmak (örneğin "Güney bölgesinde satış düşüyor") izleyiciyi doğru noktaya yönlendirir.

Graph Objects ile ileri düzey kontrol

Plotly Express hızlı sonuç verir; ama bir grafiğe farklı türde serileri birlikte koymak, ikinci eksen eklemek ya da her seriyi ayrı biçimlendirmek gerektiğinde alt düzey arayüz olan Graph Objects kullanılır.

import plotly.graph_objects as go

fig = go.Figure() fig.add_trace(go.Bar(x=df["ay"], y=df["satis"], name="Satış")) fig.add_trace(go.Scatter(x=df["ay"], y=df["hedef"], name="Hedef", mode="lines"))

Burada satış çubuklarının üstüne hedef çizgisi eklenmiştir. Pratik yaklaşım, grafiği Plotly Express ile üretip kalan ince ayarı Graph Objects ya da update_layout ile yapmaktır; en baştan alt düzeyde yazmak, daha uzun ve hataya açık kod demektir.

Grafiği paylaşmak: HTML, rapor ve uygulama

Etkileşimli grafik, yalnızca not defterinde kalmak zorunda değildir. write_html yöntemi grafiği tek başına bir tarayıcı sayfası olarak kaydeder; dosya her tarayıcıda tam etkileşimle açılır.

fig.write_html("satis_grafigi.html")

Varsayılan olarak dosya Plotly.js kütüphanesinin kopyasını da içerir, bu yüzden bağımsızdır ama büyük olabilir. Belgeye göre bu davranış include_plotlyjs bağımsız değişkeniyle ayarlanabilir; çok sayıda grafik paylaşacaksanız bu seçeneğe bakın. Grafiği filtre ve açılır menü gibi kontrollerle sunmak istiyorsanız aynı figür nesnesi Dash uygulamasında dcc.Graph bileşeninin figure parametresine verilir. Filtreli bir dashboard kurmak, ayrı bir beceri alanıdır.

Sık yapılan hatalar

Çok fazla seri çizmek: çok sayıda renkli bir çizgi grafiği okunmaz; ana seriyi öne çıkarıp diğerlerini soluk bırakın ya da facet_col parametresiyle her bölgeye ayrı küçük grafik verin. Tarih sütununu metin olarak vermek: eksen alfabetik sıralanır, zaman ölçeği bozulur; sütunu tarih türüne çevirin. Tooltip'e her şeyi doldurmak: karar için gerekli birkaç alanı seçin.

Bir başka sık hata, etkileşimin kendisini amaç görmektir. Yakınlaştırma ve seçme, okuyucuya keşif imkânı verir; ama ana mesaj hâlâ başlıkta ve ilk bakışta okunmalıdır. Eksenin sıfırdan başlamadığı çubuk grafik fark algısını abartır; çubuk grafikte sıfır tabanı koruyun. Son olarak, aynı verinin farklı grafiklerde farklı renkle gösterilmesinden kaçının; kategori-renk eşleşmesi raporun tamamında sabit kalsın.

Bu beceriyi Mindset programlarında nerede çalışırsınız?

Plotly ile İnteraktif Görselleştirme eğitimi, Python ile analiz yapan veri analistleri ve iş zekası ekipleri için uygundur. Python ile Veri Görselleştirme eğitimi ise Matplotlib, Seaborn ve Plotly'yi birlikte ele alarak farklı kütüphaneleri karşılaştırmak isteyenlere yöneliktir.

Plotly eğitiminin modül başlıkları arasında grafik türleri, Graph Objects ile özelleştirme, 3D görselleştirme ve coğrafi haritalar bulunur. Kurumsal ekipler, bu içerikle ortak bir grafik standardı oluşturup rapor üretimini tek tip hale getirebilir.

İlgili Mindset programı

Plotly ile İnteraktif Görselleştirme

Sık sorulanlar

Sık sorulan sorular

Plotly mi Matplotlib mi öğrenmeliyim?

Bu kütüphaneler farklı amaca hizmet eder. Matplotlib sabit görüntü ve yayın kalitesinde grafikte güçlüdür; Plotly ise tarayıcıda etkileşimli çıktı üretir. Başlangıçta veri analizi için ikisini de bilmek yararlıdır. Web'de paylaşılacak raporlarda ve dashboard'larda Plotly, makale ve sabit görsellerde Matplotlib daha doğal seçimdir.

Plotly ücretsiz mi, Jupyter dışında çalışır mı?

Plotly Python kütüphanesi açık kaynaktır ve ücretsiz kullanılır. Jupyter defterlerinde grafik doğrudan hücrede görünür; betik çalıştırdığınızda ise fig.show() grafiği tarayıcıda açar. Grafiği dosya olarak saklamak için write_html yöntemi kullanılır. Lisans koşullarını güncel haliyle resmî sitede kontrol edin.

Plotly grafiğine kendi tarih ve sayı biçimimi nasıl verebilirim?

Tooltip için hover_data sözlüğünde sütuna biçim dizesi verilir; eksenler içinse update_layout ile xaxis ve yaxis ayarları yapılır. Zaman eksenlerinde önce sütunu gerçek tarih türüne çevirmek gerekir. Daha ayrıntılı kontrol için Graph Objects tarafındaki hovertemplate özelliği kullanılabilir; bu özellik Plotly Express'te update_traces ile ayarlanır.

Büyük veriyle Plotly yavaşlar mı?

Tarayıcıda çizilen çok sayıda nokta, etkileşimi yavaşlatabilir. Bu durumda veriyi özetlemek (günlük yerine haftalık toplam), örnekleme yapmak ya da ayrıntıyı yalnızca seçilen aralıkta göstermek yaygın çözümlerdir. Dağılımı göstermek için ham noktalar yerine histogram ya da yoğunluk grafiği tercih etmek de yardımcı olur.

Plotly grafiğini PowerPoint veya rapora nasıl aktarırım?

Etkileşim gerekmiyorsa grafik statik görüntü olarak dışa aktarılır; bunun için ek bir görüntü dışa aktarma paketi gerekebilir, güncel gereksinimi Plotly belgesinden kontrol edin. Etkileşim gerekiyorsa grafiği HTML dosyası olarak ya da bir Dash uygulaması içinde paylaşmak daha uygun olur.

Plotly ile Etkileşimli Grafik Nasıl Çizilir?