Python Matplotlib ile Grafik Çizme

Enes Eren
5 min readMar 19, 2023

Matplotlib, verinizi görselleştirmek için kullanabileceğiniz bir python paketidir. Elimizdedeki veri setini pandas paketi ile bir DataFrame nesnesine dönüştüreceğiz ve grafik oluşturmak için bu nesneyi kullanacağız.

Paketler

from matplotlib import pyplot as plt
import pandas as pd

Veri

Elimizdeki csv formatındaki veri setini pandas ile DataFrame’e dönüştürüyoruz.

deshaun = pd.read_csv('./deshaun.csv')
aditya = pd.read_csv('./aditya.csv')
mengfei = pd.read_csv('./mengfei.csv')
six_months = pd.read_csv('./six_months.csv')
data = pd.read_csv('./data.csv')
hours = pd.read_csv('./hours.csv')
puppies = pd.read_csv('./puppies.csv')

Çizgi Grafiği

Plot fonksiyonu ile çizgi grafiği çizebiliriz.

plt.plot(deshaun.day_of_week, deshaun.hours_worked)

Buradaki plt aslında içe aktardığımız görselleştirme modülüdür. matplotlib paketinden pyplot modülünü, plt olarak sakladık ve bu modüldeki fonksiyonları bunun üzerinden çağırdık. Paketler kısmında plt ismini istediğiniz şekilde değiştirebilirsiniz ancak değiştirdikten sonra burada olduğu gibi değiştirdiğiniz şekilde kullanmanız gerekir.

Plot fonksiyonu grafik çizmek için kullanacağımız fonksiyondur. Bu fonksiyon en az iki adet girdi alır. Bu girdiler x ve y eksenlerine denk gelecek olan değerlerdir.

Bir DataFrame nesnesindeki sütunlara ulaşmak için ya köşeli parantez ya da nokta kullanabiliriz. Burada nokta kullandık.

Artık bu noktadan itibaren eğer bu kod çalıştığında grafik çizilecektir. Ancak bu grafiği bizim de görmemiz için başka bir fonksiyona ihtiyacımz var.

plt.show()

Böylece bu kodları çalıştırdığımızda grafiği görebileceğiz.

Burada Deshaun’un hangi günler kaç saat çalıştığını görmekteyiz.

Birçok grafiği aynı anda çizmek de mümkün.

plt.plot(deshaun.day_of_week, deshaun.hours_worked)

plt.plot(aditya.day_of_week, aditya.hours_worked)

plt.plot(mengfei.day_of_week, mengfei.hours_worked)

plt.show()

Burada 3 adet grafik çizme fonksiyonu 1 adet de grafik gösterme fonksiyonu oluşturduk. Ne kadar grafiğiniz olursa olsun en son kısımda show fonksiyonunu bir kez çağırmanız, hepsini göstermek için yeterli olacaktır. Ancak hepsini ayrı ayrı görmek isterseniz her bir grafiktan sonra show fonksiyonunu çağırabilirsiniz. Grafiklerin x ekseninde günler, y ekseninde ise çalışma saatleri yer almaktadır.

Burada Deshaun, Aditya ve Mengfei’nin çalışma saatlerini görmekteyiz. Ancak iyi bir grafik kendi kendini anlatabilmelidir. Örneğin ana başlık, eksen başlıkları ve gösterge gibi grafik elementlerini kullanırsak fonksiyonun anlaşılabilirliği artacaktır.

Legend

Lable, çizilen grafiğe başlık ekler. Bu başlıkları legend fonksiyonu ile bir gösterge olarak ekleyebiliriz.

plt.plot(deshaun.day_of_week, deshaun.hours_worked, label='Deshaun')

plt.plot(aditya.day_of_week, aditya.hours_worked, label='Aditya')

plt.plot(mengfei.day_of_week, mengfei.hours_worked, label='Mengfei')

plt.legend()

plt.show()

Grafik çizerken plot fonksiyonunun en az iki girdi aldığını söylemiştik, bunun sebebi en basit bir grafiğin bile bir x ve y ekseninden oluştuğundan dolayıydı. Bu fonksiyonlar daha birçok girdi alabilir, böylece başlık, renk, stil ile ilgili daha fazla özelleştirme yapabiliriz. Burada label özelliğini kullandık ve bir başlık atadık. Daha sonra legend fonksiyonu ile bu başlıkları gösterge olarak grafikte kullandık.

Grafik ve Eksen Başlıkları

Title, grafiğin ana başlığıdır. Ayrıca eksenler için de başlık verebiliriz.

plt.plot(deshaun.day_of_week, deshaun.hours_worked, label='Deshaun')
plt.plot(aditya.day_of_week, aditya.hours_worked, label='Aditya')
plt.plot(mengfei.day_of_week, mengfei.hours_worked, label='Mengfei')

plt.title('Seçili kişilerin haftalık çalışma saatleri')

plt.ylabel('Günlük çalışma saatleri')

plt.xlabel('Haftanın günleri')

plt.legend()

plt.show()

Metin

Grafiğin herhangi bir noktasında bir metin oluşturabiliriz.


plt.plot(six_months.month, six_months.hours_worked)

plt.text(3.0, 80, 'Eksik veri')

plt.show()

Text fonksiyonu 3 girdi alır. İlki yatay koordinat, ikincisi dikey koordinat ve sonuncusu da metin.

Özelleştirmeler

Grafik ile ilgili birçok özelleştirme yapabiliriz. Çizgi stili, işaret, renk vb.

plt.plot(data["Year"], data["Phoenix Police Dept"], label="Phoenix", color='DarkCyan')

plt.plot(data["Year"], data["Los Angeles Police Dept"], label="Los Angeles", linestyle=':')

plt.plot(data["Year"], data["Philadelphia Police Dept"], label="Philadelphia", marker='s')

plt.legend()

plt.ylabel('100 kişi başına düşen hırsızlık')

plt.xlabel('Yıllar')

plt.title('Seçili bölgelerdeki hırsızlık sayısının yıllara göre değişimi')

plt.show()

Burada color özelliği ile çizginin rengini, linestyle ile çizginin stilini, marker ile çizginin işaretini değiştirdik.

Style

Style, bir grafiğin temasını belirler. Başkaları tarafından oluşturulmuş birçok tema vardır. Bunlardan istediğimizi seçerek grafik stili olarak kullanabiliriz.

plt.style.use('ggplot')

plt.plot(data["Year"], data["Phoenix Police Dept"], label="Phoenix")
plt.plot(data["Year"], data["Los Angeles Police Dept"], label="Los Angeles")
plt.plot(data["Year"], data["Philadelphia Police Dept"], label="Philadelphia")

plt.legend()

plt.ylabel('100 kişi başına düşen hırsızlık')

plt.xlabel('Yıllar')

plt.title('Seçili bölgelerdeki hırsızlık sayısının yıllara göre değişimi')

plt.show()

Nokta Grafiği

Sayısal değerler içeren iki değişken arasındaki ilişkiyi gösterir.

plt.scatter(cellphone.x, cellphone.y)

plt.show()

scatter fonksiyonu nokta grafiği oluşturur ve plot fonksiyonu ile yine aynı özelliklere sahiptir.

Alpha

Alpha özelliği değerlerin opaklığını değiştirmeye yarar.

plt.scatter(cellphone.x, cellphone.y,
color='red',
marker='s',
alpha=0.1)

plt.show()

Alpha değeri 0 ile 1 arasında bir değer alır. 0 değeri tam opaktır, 1 ise opaklığın etkisiz olduğu değerdir.

Çubuk Grafiği

Kategorik değişkenlerin dağılımını gösterir.

plt.bar(hours.officer, hours.avg_hours_worked)

plt.show()

Hata Çubukları

Hata çubukları dağılımın içerdiği hata payını göstermeye yarar.

plt.bar(hours.officer, hours.avg_hours_worked,
yerr=hours.std_hours_worked)

plt.show()

Çoklu Çubuk Grafiği

Birçok grafiği tek bir çubuk grafiğinde renklerle göstererek kullanabiliriz.

plt.bar(hours.officer, hours.desk_work, label='Masa Çalışması')

plt.bar(hours.officer, hours.field_work,
bottom=hours.desk_work, label='Alan Çalışması')

plt.legend()

plt.show()

bottom ile belirtilen kısım hangi verinin altta kalacağını gösterir.

Histogram

Kategorik değişkenin dağılımını aralıklar ile gösterir.

plt.hist(puppies.weight)

plt.xlabel('Ağırlık')
plt.ylabel('Sayı')

plt.show()

Bins özelliği kullanarak bu aralıkları belirleyebiliriz.

Son

Beni Linkedin ve Github üzerinden takip edebilirsiniz.

--

--