Veri Görselleştirmesi - Diğer Çizim Teknikleri

Çubuk Grafik Yarışı

Yayın tarihi :12-Şub-22
Bölüm kodlarını ve/veya veri setlerini indir.

Animasyonlu çubuk grafik yarışı oluşturmak için matplotlib tarafından oluşturulan "bar_chart_race" paketi kullanılabilir. 

Kullanılabilmesi için paketin indirilmesi ve içe aktarılması gerekmektedir.

pip install bar_chart_race
import bar_chart_race

Söz dizimi: bar_chart_race(df, filename=None, orientation='h', sort='desc', n_bars=None, fixed_order=False, fixed_max=False, steps_per_period=10, period_length=500, interpolate_period=False, label_bars=True, bar_size=0.95, period_label=True, period_fmt=None, period_summary_func=None, perpendicular_bar_func=None, figsize=(6, 3.5), cmap=None, title=None, title_size=None, bar_label_size=7, tick_label_size=7, shared_fontdict=None, scale='linear', writer=None, fig=None, dpi=144, bar_kwargs=None, filter_column_colors=False)

  • df, veri setini temsil eder.
  • filename, oluşturulan grafiği mp4, .gif, .html, .mpeg, .mov gibi desteklenen uzantılar şeklinde kaydetmek için kullanılır. 
  • orientation, çubukların yönünü belirtmek için kullanılır. Varsayılan olarak "h" yataydır.
  • sort, çubukları azalan veya artan şekilde yapmak için kullanılır(en büyük çubuk altta mı üste mi olacağı seçilir). Varsatılan olarak "desc" azalandır.
  • n_bars, grafikte görüntülenecek çubuk sayısını temsil eder. Sayısal değer almalıdır. Varsayılan olarak "None" yani veri setindeki tüm çubuklar seçilidir.
  • fixed_order, çubuklar büyüklüklerine göre yer değiştirir. Varsayılan olarak "True" yani büyüklük değiştiğinde yeri de değişecektir. "False" olduğunda çubuklar büyüse de yerlerinde sabit kalacaktır.
  • steps_per_period, bir zaman diliminden diğerine atılacak adım sayısını temsil eder.
  • period_length, geçişlerdeki zaman diliminin uzunluğunu temsil etmektedir.
  • label_bars, çubuk değerlerinin sağ tarafında gösterilip gösterilmeyeceğini temsil etmektedir. Varsayılan olarak "True" dur.
  • bar_size, çubukların yüksekliğini temsil eder. Sayısal değer alır. Varsayılan olarak "0.95" dir. 1 olarak seçildiğinde iki çubuk arasında boşluk kalmayacaktır.
  • figsize,  grafik boyutunu temsil etmektedir. Varsayılan olarak "(6,3.5)" dir.
  • cmap, çubuklar için kullanılacak renkleri temsil etmektedir.
  • title, grafik başlığını temsil etmektedir.
  • tittle_size, grafik başlığının boyutunu temsil etmektedir.
  • dpi, grafik kalitesini temsil etmektedir.

İlgili paketi daha iyi anlamak için örnekler üzerinden devam edelim.

**Not: "bar_chart_race" paketi kullanımı için güçlü bir bilgisayar gerekebilecektir, bunun için Google tarafından ücretsiz sunulan COLAB veya benzeri bir güçlü bilgisayar kullanılabilir.

Örnek-1: Ülkelere göre 22.01.2020 - 09.05.2020 tarihleri arasında "Covid-19" hastalığı bulaşan kişişerin sayısının bulunduğu "corona_dat.xls" veri seti kullanarak çubuk grafik yarışı uygulaması oluşturalım.

#İlgili kütüphaneler içe aktarılır.
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns

import bar_chart_race as bcr
#Sütun sayısı büyük olduğu için "display.max_columns" değeri 100 ayarlanarak daha fazla sütun görülebilir. 
pd.set_option("display.max_columns",100)
#Veri seti okunur.
df=pd.read_csv('corona_dat.xls')
#İlk 5 satır
df.head()

Çıktı:

#Son 5 satır
df.tail()

Çıktı:

#Veri seti boyutu
df.shape

Çıktı:

(112, 188)

Veri setinde yukarıda da görüldüğü gibi her sütun değeri bir ülkeyi temsil etmektedir, 188 tane ülke bulunmaktadır. Bu ülkerlerin listesine bakalım;

df.columns

Çıktı:

Index(['date', 'Afghanistan', 'Albania', 'Algeria', 'Andorra', 'Angola',
       'Antigua and Barbuda', 'Argentina', 'Armenia', 'Australia',
       ...
       'Uruguay', 'US', 'Uzbekistan', 'Venezuela', 'Vietnam',
       'West Bank and Gaza', 'Western Sahara', 'Yemen', 'Zambia', 'Zimbabwe'],
      dtype='object', length=188)
#188 tane ülkeye bakmak yerine seçeceğimiz birkaç ülkeyi inceleyelim.
#'Brazil','China','Spain','Turkey','United Kingdom','US','Russia' ülkelerini seçelim veya ekleme/çıkarma işlemi yapabilirsiniz.
df=df[['date','Brazil','China','Spain','Turkey','United Kingdom','US','Russia']]
df.head()

Çıktı:

#Veri setinde mevcut index değerleri yerine "date" sütunu değerlerini index değerleri yapalım.
df.set_index('date',inplace=True)

#Her gün değeri önceki günlerin değeri ile toplanarak o güne kadar olan vaka sayısı belirlenebilir. 
df_total=df.cumsum(axis=0)

Veri setini hazırladığımıza göre şimdi çubuk grafik yarışı işlemine geçebiliriz. Ses ve videoyları kaydetmek, dönüştürmek ve yayınlamak için kullanılan FFmpeg uygulamasının bilgisayarda yüklü olması gerekmektedir. Yapılan çizimler veya görselleri video olarak kaydetmek istediğimizde eğer FFmpeg yüklü değilse kodumuz çalışmayacak ve hata verecektir.

Eğer FFmpeg uygulaması yüklemesinde sıkıntı yaşanıyorsa buraya kadar yazılan ve bundan sonra yazılan kod satırlarını google tarafından ücretsiz olarak sunulan COLAB üzerinden yapılabilir. COLAB'da FFmpeg uygulaması yüklenmiş şekilde hazır bulunmaktadır. 

#bar_chart_race ataması yapıldı.
bcr.bar_chart_race(
    df_total,
    filename="covid19.mp4",
    title="Covid 19 Çubuk Grafik Yarışı",
    figsize=(8,6),
    dpi=250
)
#Oluşturulan video okunur
video=open('covid19.mp4','rb').read()
data_url="data:video/mp4;base64,"+b64encode(video).decode()
HTML("""
<video width=100% controls>
<source src={} type="video/mp4">
</video>
""".format(data_url))

Çıktı:

Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.