Kurs
Bu yazıda, en bilinen kütüphaneler olan Matplotlib, Seaborn, Plotly, Plotnine ve Pandas’ı kullanarak Python’da çubuk grafikleri dolaşacağım. Görselleri inceleyip hangi kütüphaneyi daha çok beğendiğinize karar verebilirsiniz. Her yöntem için önce basit çubuk grafikleri oluşturmanın temelleriyle başlayacak, ardından yavaş yavaş özelleştirme tekniklerine geçeceğim.
Elimden geldiğince kapsamlı ve açık olmaya çalışacağım, ancak unutmayın: veri analizi ve veri biliminde çubuk grafikleri sadece bir parçadır. Daha geniş bir bakış açısı kazanmak, gerçek veri setleriyle pratik yapmak, çok aranan bir sertifika almak ve bu alanda kariyere başlamak için bugün Associate Data Scientist in Python kariyer yolumuza kaydolun.
Python’da Çubuk Grafiği Oluşturma Yöntemleri
En popüler Python kütüphanelerini kullanarak çubuk grafikleri nasıl oluşturup özelleştirebileceğimize bakalım. Her kütüphane kendine özgü özellikler ve farklı özelleştirme düzeyleri sunar.
Matplotlib ile çubuk grafik oluşturma
Matplotlib ile başlayacağım; Python’daki temel çizim kütüphanesidir ve çok sayıda özelleştirme seçeneği sunar.
Temel çubuk grafikler
Matplotlib ile başlamanın yolu gerekli kütüphaneleri içe aktarmaktır. Matplotlib’in pyplot modülü, grafik oluşturmak için işlevler sağlar. Bu örnekte, farklı görselleştirme kütüphanelerini tercih eden kişi sayısını gösteren örnek veriler kullanacağız. Burada library listesi kütüphane adlarını tutar ve x ekseninde etiket olarak görünür; chosen_by listesi ise karşılık gelen meraklı sayısını içerir ve y ekseninde çubuk yüksekliği olarak gösterilir.
import matplotlib.pyplot as plt
# Number of preferences for different libraries
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']
chosen_by = [2500, 1800, 3000, 2200]
Dikey bir çubuk grafik oluşturmak için plt.bar() işlevini kütüphane adları ve tercih verileriyle çağırırız. Renk olarak skyblue seçiyorum. plt.xlabel(), plt.ylabel() ve plt.title() işlevleri eksenlere etiket ve grafiğe başlık ekler. Son olarak plt.show() grafiği görüntüler.
# Vertical Bar Plot
plt.bar(library, chosen_by, color='skyblue')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
plt.show()

Benzer şekilde, plt.barh() işlevini kullanarak yatay bir çubuk grafik oluşturabilirsiniz. Bunun için çubuklar için açık yeşil bir renk kullanacağım.
# Horizontal Bar Plot
plt.barh(library, chosen_by, color='lightgreen')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
plt.show()

İleri düzey özelleştirmeler
Matplotlib; açıklamalar ekleme, eksen etiketleri, başlıklar ve lejantları özelleştirme gibi geniş bir özelleştirme yelpazesi sunar. Örneğin, plt.text() işlevini kullanarak her çubuğa açıklama ekleyebilir, metni belirtilen koordinatlara yerleştirebilirsiniz.
plt.bar(library, chosen_by, color='skyblue')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
# Adding annotations
for i, value in enumerate(chosen_by):
plt.text(i, value + 5, str(value), ha='center')
plt.show()

Yukarıdaki kodda, plt.text() her çubuğun üzerine meraklı sayısını yazdırır. enumerate() işlevi her çubuğun indeksini ve değerini sağladığı için metin doğru konumlandırılır.
Gruplandırılmış ve istiflenmiş çubuk grafikler
Matplotlib ile gruplandırılmış ve istiflenmiş çubuk grafikler oluşturmak için, birden çok kategoriyi (örneğin, farklı bölgeler veya demografiler) temsil eden ek parametreler kullanabilirsiniz. Diyelim ki görselleştirme kütüphanelerinin farklı bölgelerdeki popülerliğine dair verileriniz var. Gruplandırılmış çubuk grafiklerde, her bölge için ayrı veri setleri tanımlar ve çubukların boşluk ve hizalamasını kontrol etmek için bar_width kullanırsınız; böylece her grup karşılaştırmayı kolaylaştıracak şekilde yan yana yerleştirilir.
import numpy as np
# Define library names
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']
# Number of Enthusiasts for different regions
enthusiasts_north = [2000, 1500, 2500, 2000]
enthusiasts_south = [1500, 1300, 2000, 1800]
bar_width = 0.35
x = np.arange(len(library))
# Grouped Bar Plot
plt.bar(x - bar_width/2, enthusiasts_north, bar_width, label='North Region', color='skyblue')
plt.bar(x + bar_width/2, enthusiasts_south, bar_width, label='South Region', color='lightgreen')
# Adding labels and title
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Regional Preferences for Visualization Libraries (Grouped)')
plt.xticks(x, library)
plt.legend(title='Regions')
plt.show()

Bu örnekte x = np.arange(len(library)) satırı, çubukların konumları için bir dizi oluşturur. Her bölge için çubuklar plt.bar() ile iki kez çizilir ve plt.xticks() x eksenindeki etiketleri ayarlar. plt.legend() bölgeleri ayırt etmek için bir lejant gösterir.
İstiflenmiş bir çubuk grafik için bottom parametresini kullanarak bir veri setini diğerinin üzerine istifleyebilirsiniz. İşte her kütüphane için farklı bölgelerden gelen meraklı sayısını üst üste gösterme şekli.
# Define library names
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']
# Number of Enthusiasts for different regions
enthusiasts_north = [2000, 1500, 2500, 2000]
enthusiasts_south = [1500, 1300, 2000, 1800]
x = np.arange(len(library))
# Stacked Bar Plot
plt.bar(x, enthusiasts_north, label='North Region', color='skyblue')
plt.bar(x, enthusiasts_south, bottom=enthusiasts_north, label='South Region', color='lightcoral')
# Adding labels and title
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Regional Preferences for Visualization Libraries (Stacked)')
plt.legend()
plt.show()

Bu istiflenmiş çubuk grafikte, enthusiasts_south Güney bölgesindeki meraklıları temsil ederken, enthusiasts_north Kuzey bölgesi için temel veridir. plt.bra() işlevi, önce Kuzey bölgesi için çubukları oluşturmak, ardından Güney bölgesinin çubuklarını üstüne istiflemek için tekrar çağrılır.
Matplotlib Python kütüphanesini kullanma hakkında daha kapsamlı bir açıklama için Introduction to Data Visualization with Matplotlib kursumuzu inceleyebilirsiniz. Ayrıca süreci altı temel adımda özetleyen Matplotlib Cheat Sheet dokümanımız da mevcut.
Seaborn ile çubuk grafik oluşturma
Seaborn, Matplotlib üzerine kurulu ve çok şık çubuk grafikleri kolayca oluşturmayı sağlayan bir görselleştirme kütüphanesidir.
Temel çubuk grafikler
Seaborn’un barplot() işlevi, minimum kodla temel çubuk grafikleri oluşturmayı kolaylaştırır. Önce Seaborn kütüphanesini içe aktarın ve bir sözlük oluşturun.
import seaborn as sns
data = {'Library': library, 'Chosen by': chosen_by}
Ardından, sns.barplot() işlevini kullanarak x ve y değişkenlerini ve veri kaynağını belirterek çubuk grafiği oluşturun. Burada viridis renk paletini kullanıyorum.
sns.barplot(x='Library', y='Chosen by', data=data, palette='viridis')
plt.title('Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

İsterseniz palette için bir değer vermeyebilir ve grafikte tekdüze bir renk elde edebilirsiniz; daha iyisi, çubuk grafiğe bir renk atayabilirsiniz. Bu durumda bir hex kodu kullanacağım:
sns.barplot(x='Library', y='Chosen by', data=data, color=’#5EB1FF’)
plt.title('Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

İleri düzey özelleştirme
Seaborn elbette kapsamlı özelleştirme seçenekleri sunar; renkler ve açıklamalar dahil. Örneğin, Matplotlib’de yaptığınız gibi çubuk grafiğe açıklamalar ekleyebilirsiniz.
# Customized Bar Plot
sns.barplot(x='Library', y='Chosen by', data=data, palette='viridis')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
# Adding annotations
for i, value in enumerate(chosen_by):
plt.text(i, value + 5, str(value), ha='center')
plt.show()

Bu örnekte palette='viridis' parametresi çubukların renk paletini değiştirir ve plt.text() her çubuğa açıklama ekler.
Çok daha fazla ayrıntı için Introduction to Data Visualization with Seaborn kursumuza göz atabilirsiniz. Seaborn çubuk grafiğinizi özellikle güzel göstermek için de bazı iyi fikirler sunan Seaborn Renk Paleti: Hızlı Renk Seçim Rehberi yazımızı kullanın.
Plotly ile çubuk grafik oluşturma
Sırada Plotly var; etkileşimli ve dinamik görselleştirmeler, çubuk grafikleri de dahil olmak üzere, oluşturmasıyla bilinen bir kütüphane.
Temel çubuk grafikler
Plotly ile temel bir çubuk grafik oluşturmak graph_objects modülünü kullanmayı gerektirir. Gerekli modülü içe aktarabilir ve çubuklar için gökyüzü mavisi bir renk kullanarak bir çubuk grafik oluşturabiliriz.
import plotly.graph_objects as go
fig = go.Figure(go.Bar(x=library, y=chosen_by, marker_color='skyblue'))
fig.update_layout(title='Which Visualization Library Do People Prefer?', xaxis_title='Visualization Library', yaxis_title='Number of Enthusiasts')
fig.show()

İleri düzey özelleştirme
Plotly, çubuk grafiklerin etkileşimini ve görünümünü geliştirmek için yöntemler sunar. Örneğin, fig.add_annotation() işlevini kullanarak çubuklara açıklamalar ekleyebilirsiniz.
fig = go.Figure(go.Bar(x=library, y=chosen_by, marker_color='skyblue'))
fig.update_layout(title='Which Visualization Library Do People Prefer?', xaxis_title='Visualization Library', yaxis_title='Number of Enthusiasts')
# Adding annotations
for i, value in enumerate(chosen_by):
fig.add_annotation(x=library[i], y=value, text=str(value), showarrow=False, yshift=10)
fig.show()

Dinamik ve etkileşimli çubuk grafikler
Plotly, gerçek zamanlı güncellenen dinamik çubuk grafikler oluşturabilir; bu da onu panolar için ideal kılar. Plotly’nin üst seviye arayüzü olan Plotly Express ile, az kodla etkileşimli çubuk grafikler oluşturabilirsiniz.
import plotly.express as px
# Using a sample dataset from Plotly
df = px.data.gapminder().query("year == 2007")
fig = px.bar(df, x='continent', y='pop', color='continent', hover_name='country', title='Population by Continent in 2007')
fig.show()

Bu örnekte px.data.gapminder() Plotly’den örnek bir veri seti yükler. px.bar() işlevi, belirtilen x ve y değişkenleri, renk, üzerine gelince görünen ad ve başlıkla etkileşimli bir çubuk grafik oluşturur. Daha fazlasını görmek isterseniz DataCamp’te ayrıntılı bir kursumuz var: Introduction to Data Visualization with Plotly.
Plotnine ile çubuk grafik oluşturma
Plotnine, R’deki ggplot2’den esinlenen, Python’da grafik dilinin bir uygulamasıdır. Farklı grafik öğelerini birleştirerek karmaşık grafikleri beyan edici bir şekilde oluşturmanıza olanak tanır.
Temel çubuk grafikler
Plotnine ile başlamak için gerekli kütüphaneleri içe aktarın ve bir DataFrame oluşturun. Ardından bir ggplot nesnesi tanımlayın, bir geom_bar katmanı ekleyin ve estetikleri belirtin.
from plotnine import ggplot, aes, geom_bar, labs
import pandas as pd
# Number of preferences for different libraries
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
'Chosen by': [2500, 1800, 3000, 2200]})
# Basic Bar Plot
ggplot(data, aes(x='Library', y='Chosen by')) + geom_bar(stat='identity', fill='skyblue') + labs(title='Which Visualization Library Do People Prefer?', x='Visualization Library', y='Number of Enthusiasts')

Bu örnekte aes(x='Library', y='Chosen by'), grafiğin x ve y estetiklerini ayarlar. geom_bar(stat='identity', fill='skyblue') kısmı, gökyüzü mavisi dolgu rengine sahip bir çubuk grafik oluşturur.
İleri düzey özelleştirme
Plotnine’ın katmanlı yaklaşımını kullanarak özelleştirebilirsiniz. Açıklamalar, eksen etiketleri, başlıklar ve lejantlar ekleyebilirsiniz.
from plotnine import ggplot, aes, geom_bar, geom_text, labs
# Creating our Pandas DataFrame
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
'Chosen by': [2500, 1800, 3000, 2200]})
# Basic Bar Plot with labels
(ggplot(data, aes(x='Library', y='Chosen by'))
+ geom_bar(stat='identity', fill='skyblue')
+ geom_text(aes(label='Chosen by'), va='bottom', size=10, nudge_y=5) # Adds labels on top of bars
+ labs(title='Which Visualization Library Do People Prefer?', x='Visualization Library', y='Number of Enthusiasts'))

Gruplandırılmış ve istiflenmiş çubuk grafikler
Plotnine, gruplandırılmış ve istiflenmiş çubuk grafikleri de destekler. Gruplandırılmış çubuk grafikler için önce gruplayacak kategorik bir değişken tanımlamanız gerekir.
# Number of preferences for different libraries in different regions
data = pd.DataFrame({'Library': ['Matplotlib', 'Plotly', 'Plotnine', 'Seaborn'] * 2,
'Chosen by': [2000, 1500, 2500, 2000, 1500, 1300, 2000, 1800],
'Region': ['North', 'North', 'North', 'North', 'South', 'South', 'South', 'South']})
# Grouped Bar Plot
(ggplot(data, aes(x='Library', y='Chosen by', fill='Region'))
+ geom_bar(stat='identity', position='dodge')
+ labs(title='Regional Preferences for Visualization Libraries (Grouped)', x='Visualization Library', y='Number of Enthusiasts'))

İstiflenmiş çubuk grafikler için position = 'stack' kullanabilirsiniz.
# Stacked Bar Plot
(ggplot(data, aes(x='Library', y='Chosen by', fill='Region'))
+ geom_bar(stat='identity', position='stack')
+ labs(title='Regional Preferences for Visualization Libraries (Stacked)', x='Visualization Library', y='Number of Enthusiasts'))

Bu örneklerde position = 'dodge' gruplandırılmış çubuklar oluştururken, position = 'stack' çubukları üst üste istifler.
Pandas ile çubuk grafik oluşturma
Son olarak Pandas. Pandas, çubuk grafikleri doğrudan DataFrame’lerden oluşturmanın kullanışlı bir yolunu sağlar; bu nedenle temel grafikler için hızlı ve kolay bir seçenektir.
Temel çubuk grafikler
Pandas’ta bir çubuk grafik oluşturmak için bir DataFrame üzerinde plot.bar() işlevini kullanabilirsiniz.
import pandas as pd
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
'Chosen by': [2500, 1800, 3000, 2200]})
Ardından plot.bar() ile bir çubuk grafik oluşturun.
# Basic Bar Plot
data.plot.bar(x='Library', y='Chosen by', color='skyblue', title='Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

İleri düzey özelleştirme
Pandas, ek parametreler ve Matplotlib ile entegrasyon yoluyla çubuk grafikleri özelleştirmeye olanak tanır.
# Customized Bar Plot
ax = data.plot.bar(x='Library', y='Chosen by', color='skyblue', title='Which Visualization Library Do People Prefer?')
ax.set_xlabel('Visualization Library')
ax.set_ylabel('Number of Enthusiasts')
# Adding annotations
for i in ax.containers:
ax.bar_label(i, label_type='edge')
plt.show()

Bu örnekte ax.bar_label(i, label_type='edge'), çubuklara açıklama ekleyerek sayıların her çubuğun üstünde görünmesini sağlar.
Gruplandırılmış ve istiflenmiş çubuk grafikler
Pandas’ta gruplandırılmış ve istiflenmiş çubuk grafikleri oluşturmak oldukça basittir. Gruplandırılmış çubuk grafikler için, her grup için ayrı sütunlara sahip olacak şekilde DataFrame’i pivotlamanız gerekir.
# Number of preferences for different libraries in different regions
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
'North Region': [2000, 1500, 2500, 2000],
'South Region': [1500, 1300, 2000, 1800]})
# Grouped Bar Plot
data.plot.bar(x='Library', y=['North Region', 'South Region'], title='Regional Preferences for Visualization Libraries (Grouped)')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

İstiflenmiş çubuk grafikler için stacked=True kullanın.
# Stacked Bar Plot
data.plot.bar(x='Library', y=['North Region', 'South Region'], stacked=True, title='Regional Preferences for Visualization Libraries (Stacked)')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

Etkili Python Çubuk Grafikleri Tasarlamak İçin En İyi Uygulamalar
Çubuk grafikleri oluşturmak kolaydır; ancak etkili ve içgörü sunan çubuk grafikleri tasarlamak ayrıntılara dikkat gerektirir. Aşağıdaki yönergeler, verinizin hikâyesini etkili biçimde anlatan çubuk grafikler oluşturmanıza yardımcı olur.
- Yaygın Hatalardan Kaçınma: Çubuk grafik tasarlarken, net ve etkili kalmaları için aşırı bilgi yüklemesinden kaçının. Dağınıklığı önlemek için özde kalın. Eksenler arasında tutarlı ölçeklendirme kullanın. İzleyiciyi abartılı farklarla yanıltmamak için eksenin sıfırdan başladığından emin olun.
- Renkler ve Vurguların Seçilmesi: Verinize anlam katan renkler seçin; örneğin negatif değerler için kırmızı, pozitifler için yeşil. Okurun anlatıyı takip etmesine yardımcı olmak için ilişkili grafiklerde tutarlı bir renk şeması kullanın. Önemli içgörülere dikkati çekmek için renkten faydalanın.
- Daha İyi Anlaşılırlık İçin Çubukların Sıralanması: Zaman temelli verilerde kronolojik, ya da eğilimleri vurgulamak için azalan/artan gibi veri bağlamına göre mantıklı bir düzen kullanın. İlgili çubukları bir araya getirin; grupları ayırmak için renk veya boşluk kullanın.
Sonuç
Çubuk grafikleri oluşturma ve özelleştirme becerisi, her veri profesyoneli için temel bir yetenektir. Bu yazıda belirtilen yönergeleri ve en iyi uygulamaları izleyerek, veri içgörülerinizi etkili biçimde ileten, net, bilgilendirici ve görsel olarak çekici çubuk grafikler oluşturabilirsiniz. Bu da verinizi daha etkili sunmanızı ve daha bilinçli kararlar almanızı sağlar.
Python veri görselleştirme becerilerinizi geliştirmeye devam etmek isterseniz, yeni başlayanlara başlangıç noktası sunan Intro to Python for Data Science kursumuza veya Python’da ustalaşmak için kapsamlı bir öğrenme yolu sunan Python Programming beceri yolumuza göz atın.
Veri alanında deneyimli bir profesyonel ve yazar; veri dünyasında uzmanlaşmak isteyenleri güçlendirmeye tutkuyla bağlı.
Python Çubuk Grafikleri Hakkında SSS
Python çubuk grafiği nedir ve neden kullanışlıdır?
Bir çubuk grafik, kategorik verileri dikdörtgen çubuklarla gösterir; çubuğun uzunluğu veya yüksekliği, kategorinin değerine karşılık gelir. Kategorileri karşılaştırmak, dağılımları görselleştirmek ve eğilimleri veya aykırı değerleri fark etmek için kullanışlıdır.
Dikey ve yatay Python çubuk grafiği arasında nasıl seçim yaparım?
Kısa veya kolay okunabilir etiketler için dikey çubuk grafik; daha uzun etiketler ya da çok sayıda kategori olduğunda ise karmaşayı önlemek için yatay çubuk grafik tercih edebilirsiniz.
Grafiğimdeki çubukların renklerini nasıl özelleştiririm?
Grafiğinizi görsel olarak daha çekici kılmak veya belirli bir renk şemasına uydurmak için çubuk renklerini özelleştirebilirsiniz. Matplotlib’de color parametresini kullanın:
plt.bar(categories, values, color=['red', 'green', 'blue'])
plt.show()
Çubuk grafiğimdeki çubukları Python ile nasıl sıralayabilirim?
Çubukları sıralamak, en önemli veya en az önemli kategorileri vurgulamaya yardımcı olabilir. Çizmeye başlamadan önce verinizi sıralayabilirsiniz:
data = {'Category': ['A', 'B', 'C'], 'Value': [4, 7, 1]}
df = pd.DataFrame(data).sort_values(by='Value', ascending=False)
plt.bar(df['Category'], df['Value'])
plt.show()Plotly ile etkileşimli Python çubuk grafikleri oluşturabilir miyim?
Evet, Plotly ile etkileşimli çubuk grafikleri oluşturabilirsiniz. İşte Plotly Express kullanılarak bir örnek:
import plotly.express as px
data = {'Category': ['A', 'B', 'C'], 'Value': [4, 7, 1]}
fig = px.bar(data, x='Category', y='Value', title='Interactive Bar Plot')
fig.show()
