Python Matplotlib ile Grafik Oluşturma
Kurulum
- Sisteminize
Python 3kurduktan sonrapython get-pip.pydiyerek Python Package Manager'i kurabilirsiniz. Böylece istediğiniz python paket, kütüphane vs.. kolayca kurabilirsiniz. pip install matplotlibdiyerek kolayca matplotlib'i kurabilirsiniz.
İlk grafik
workspace.pyadında bir dosya oluşturup aşağıdaki kodlarımızı yazalım.
xxxxxxxxxximport matplotlib.pyplot as pltplt.plot( [1, 2, 3, 4, 5, 6, 7], [9, 3, 6, 9, 3, 7, 5])plt.show()matplotlibinpyplotmodülünü import ettik.as pltdiyerek dosyamızın her yerindepyplotyerinepltolarak kullanacağımızı belirttik.pyplot'un (yani projemizdekiplt'nin)plotmethoduna 2 adet liste verdik.- listemiz grafikteki
x eksenini, 2.listemizy eksenini belirtiyor.
- listemiz grafikteki
plt.show()diyerek grafiğimizi gösteriyoruz.Terminalden
python workspace.pydiyerek çalıştırdıktan sonra aşağıdaki grafik oluşacak ve ekranda gösterilecek.

- Şimdi kodlarımızı aşağıdaki gibi düzenleyelim
xxxxxxxxxximport matplotlib.pyplot as pltx = [1, 2, 3, 4, 5, 6, 7]y = [9, 3, 6, 9, 3, 7, 5]plt.plot(x, y, label='Rastgele değerler')plt.legend()plt.title("Merhaba matplotlib!")plt.show()titleile grafiğimize başlık ekliyoruz.legend; gösterilen grafiğin açıklamasını küçük bir kutu içinde gösterir.labelkullanarak grafiğimizin rastgele değerlerden oluştuğunu belirttik.
- Şöyle bir senaryomuz olsun; "2 vize 2 final sınavına giren 4 arkadaşın performans grafiği"ni gösterelim.
xxxxxxxxxximport matplotlib.pyplot as pltsinavlar = [1, 2, 3, 4] # 1 ve 2 vize 3 ve 4 finaladnan_sonuclar = [60, 90, 70, 50]hamit_sonuclar = [100, 80, 40, 90]recep_sonuclar = [70, 80, 90, 96]mehmet_sonuclar = [40, 60, 100, 98]plt.plot(sinavlar, adnan_sonuclar, label='Adnan')plt.plot(sinavlar, hamit_sonuclar, label='Hamit')plt.plot(sinavlar, recep_sonuclar, label='Recep')plt.plot(sinavlar, mehmet_sonuclar, label='Mehmet')plt.xlabel("Sınavlar")plt.ylabel("Sonuçlar")plt.legend()plt.title("Vize & Final\nÖğrenci Performansları")plt.show()xlabelveylabelile x ve y eksenlerine isim verebiliyoruz.
Şimdi haftanın 7 günü çalışılan saatleri bar grafiği olarak gösterelim.
xxxxxxxxxximport matplotlib.pyplot as pltdays = [1, 2, 3, 4, 5, 6, 7]work_hours = [8, 12, 10, 16, 6, 7, 3]plt.bar(days, work_hours, color='#f48042')plt.xlabel("Günler")plt.ylabel("Çalışılan Saat")plt.title("Günlük Çalışma Grafiği")plt.show()plt.barile bar grafiği çizdirebiliyoruz.colorile istediğimiz rengi verebiliriz.
- Başka bir örnek olarak 2 kişinin harcamalarını bar grafiği üzerinde görelim.
xxxxxxxxxximport matplotlib.pyplot as pltadnan = [1, 3, 5, 7, 9, 11, 13]kaya = [0, 2, 4, 6, 8, 10, 12]adnan_payment = [43, 85, 97, 45, 87, 32, 13]kaya_payment = [73, 35, 73, 45, 15, 60, 88]plt.bar(adnan, adnan_payment, label='Adnan')plt.bar(kaya, kaya_payment, label='Kaya')plt.legend()plt.title("Adnan ve Kaya Harcamalar")plt.show()
Bir bölgedeki insanların yaşlarının oranlarını gösteren histogram uygulamasını görelim.
xxxxxxxxxximport matplotlib.pyplot as pltimport random# 100 adet rastgele sayı 10 ile 100 arasında üretirpopulation_ages = [random.randrange(10, 100) for _ in range(100)]# yaş aralığını 10 ile 100 arasında grafik üzerinde temsil etmesi içinages = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]plt.hist(population_ages, ages, histtype='bar', rwidth=0.5, label='Yaş populasyonu')plt.ylabel("Sıklık")plt.xlabel("Yaş")plt.legend()plt.title("Nüfus")plt.show()histtypeile histogram tipini bar olarak belirledik.
Grafiği x ekseninden başlayarak şöyle okuyabiliriz;
- 20 yaşından küçük 10 kişi (Sıklık yani y ekseni) var.
- 60 ile 70 yaş arasında 14 kişiden fazla insan var.
- 30 ile 40 yaş arasında 6 kişi var.
Gelir ve Giderleri farklı bir grafik modeli scatter ile gösteren bir uygulama yapalım.
xxxxxxxxxximport matplotlib.pyplot as pltimport randommonths = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]revenues = [random.randrange(100, 1000) for _ in range(12)]expenses = [random.randrange(100, 1000) for _ in range(12)]plt.scatter(months, revenues, label='Gelir', marker='*', s=100)plt.scatter(months, expenses, label='Gider', marker='o', s=100)plt.xlabel('Aylar')plt.ylabel('Tutar')plt.xticks(months)plt.legend()plt.title("Gelir & Gider Grafiği")plt.show()plt.scatterile farklı bir grafik modeli oluşturuyoruz.markerparametresi ile verileri nasıl göstereceğimizi söylüyoruz.s=100diyerek size yani boyutu belirledik.plt.xticksdiyerek x eksenindeki değerleri grafiğin tam göstermesini sağladık. Yani 1'den 12'ye kadar olan bütün değerler. Aksi durumda 2'şerli artan değerler olarak gösteriyordu.
Haftalık faaliyetleri stackplot grafik modeli ile gösterelim
xxxxxxxxxximport matplotlib.pyplot as pltdays = [1, 2, 3, 4, 5, 6, 7]sleeping = [6, 7, 5, 8, 9, 12, 16]eating = [2, 3, 2, 1, 4, 1, 2]working = [10, 8, 10, 9, 11, 4, 6]playing = [1, 2, 1, 3, 2, 1, 3]labels = ['Uyku', 'Yemek', 'Çalışma', 'Oyun']plt.stackplot(days, sleeping, eating, working, playing, labels=labels)plt.xlabel('Günler')plt.ylabel('Faaliyetler')plt.title("Haftalık Faaliyet Grafiği")plt.legend()plt.show()
Pasta dilimi grafik modelini uygulayalım
xxxxxxxxxxlabels = ['Uyku', 'Yemek', 'Çalışma', 'Oyun']colors = ['c', 'r', '#34ed65', '#f4ee42']slices = [20,15,55,10] # dilimlerplt.pie(slices, labels=labels, colors=colors, startangle=90, shadow=True, explode=(0, 0.1, 0, 0.2), autopct='%1.2f%%' )plt.title("Haftalık Faaliyetler")plt.show()plt.pieile pasta dilimi grafiği olacağını belirtiyoruz.explodeile hangi dilimi ne kadar dışarı atacağımızı belirtiyoruz.autopctile yüzdeli % olarak gösterebiliyoruz.shadowgölge efekti verir.startangleile dilimlerin nereden başlayacağını (hangi açıdan) belirtiyoruz.

Dosya okunan veri ile grafik işlemi
xxxxxxxxxximport matplotlib.pyplot as pltimport numpy as npx, y = np.loadtxt('data.txt', delimiter=',', unpack=True)plt.plot(x, y, label='Data.txt dosyası grafiği')plt.xlabel('x değerleri')plt.ylabel('y değerleri')plt.title("Dosyadan Okuma")plt.legend()plt.show()data.txtiçeriği:
xxxxxxxxxx1,32,43,24,85,96,27,38,49,510,711,612,513,714,1215,1516,1717,1818,2019,1020,1030,30
Yorumlar