Python İle Veri Görselleştirme-Matplotlib Kullanımı[Data Visualization With Python]

mes9446

Yeni üye
10 Haz 2014
3
0
Merhaba, Numpy kullanımı konusunu incelediyseniz,2. aşamaya yani verileri görselleştirme aşamasına geldiniz denebilir. Arraylerimizi veya DataFrame lerimizi görmek,analiz etmek ve veri dağılımlarına göre algoritma seçimi yapmamızı sağlar,işimizi kolaylaştırır.
Kod:
import matplotlib.pyplot as plt
Matplotlib çok büyük bir kütüphane,çizdirme işlemleri için pyplot kullanılıyor. "plt" kısaltmasıyla kullanacağız. İsterseniz plt yerine başka bir şey de yazabilirsiniz.
Çizgi Grafiği
2 eksende, x ve y değerlerini belirlememiz gerek.
(y=x^2 fonksiyonu çizdirelim.)

Kod:
x=np.linspace(-10,10,100)  #-10 dan 10 a kadar 100 sayı içeren bir array oluşturduk
y=map(lambda x:x**2,x) #x in her değerinin karesi de y yi oluşturdu. Map ilk parametre olarak return değeri olan bir fnk alır,ikinci parametrede de hangi listeye uygulayacaksak onu yazarız.
plt.plot(list(x),list(y))
plt.show() #bir üst satırda çizdirdik.Burada ise ekranda gösteriyoruz.
oDQpr0.png


Anlaşılabilirlik için çizgi grafiğine dair her şeyi bu fonksiyon üzerinden anlatacak,görselleri de yine aynı fonksiyon üzerinden yapacağım.
Figure fonksiyonundan bahsedeyim. grafiğin boyutunu ayarlayabildiğimiz,eğer birden fazla grafik çizdireceksek parametrede 1,2,3 şeklinde numaralar veriyoruz,program karıştırmadan okadar grafiği çiziyor.
Grid ekleme
Grid de ızgara diye çevriliyor Türkçemize. Grafiğin rahat okunması için güzel olabiliyor.
Kod:
plt.grid()
Başlık
Eksenlerin başlığı ve grafiğin ana başlığını giriyoruz.
Kod:
plt.ylabel("Y Değerleri")
plt.xlabel("X Değerleri")
plt.title("Y=X^2 Fonksiyonu")
oDQFRH.png

plt.plot un parametrelerine bakalım biraz da,
Kod:
plt.plot(list(x),list(y),marker="*",linestyle="dashed",linewidth=1,markersize=3)
# marker parametresi düz çizgi değil de istediğimiz sembol ile çizgi çizilmesini sağlıyor.
daha fazla bilgi için:https://matplotlib.org/3.1.0/api/markers_api.html
linestyle parametresi çizginin stilini belirliyor.dashed kesik demek.Kesik çizgilerden oluşan,marker şekli yıldız, boyutu 3 çizgi kalınlığı 1 olan bir grafik:::
oDrnvP.png

Legend
Legend çizgilerin etiketleri.Birden fazla çizgi varsa grafiğimizde hangisinin neyi ifade ettiğini anlamamıza yarayan gösterge.
Anlayabilmemiz için grafiğimize bir fonksiyon daha çizelim.

y=x olsun bu da.
Kod:
a=np.linspace(-5,5,100)
b=map(lambda x:x,a)
plt.plot(a,list(b))
plt.legend(["x^2","y=x"])
plt.grid()
Hem grid ekledik,hem legend değerlerini ekledik. Bakalım nasıl olmuş
oDrNC8.png


Ticks Kullanımı
Ticks olayı da şöyle,örneğin aylara göre ürün satışı ile alakalı bir grafiğiniz var, x ekseni ayları temsil ediyor y satış rakamlarını.
Normalde çizginin oluşabilmesi için plot fonksiyonuna x i de y yi de sayı değeri olarak vermemiz gerek.Fakat gösterimde ticks ile etiketlerini değiştirebiliyoruz.Gösterelim.
Bu sefer doğrusal bir grafik kullanalım, y=2x

Kod:
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,5,100)
y=map(lambda x:2*x,x)

plt.ylabel("Satış(Milyon$)")
plt.xlabel("Aylar")
plt.plot(x,list(y),color="seagreen",linewidth=4) #çizgi daha belirgin olsun,hep mavi oldu grafikler renk de değişsin :)
Aylar=["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran"]
plt.xticks([0,1,2,3,4,5],Aylar)
plt.show()
oDr4Xx.png



Annotasyon
Grafikte spesifik bir noktayı çizip üzerine not düşebilmemizi sağlayan fonksiyon.Kullanalım,

Kod:
plt.annotate("Buraya ne yazıcaksanız artık",(2,4),(3,1),arrowprops=dict(color='black',linewidth=2))
#ilk parametre anlayacağınız üzere yazımız,ikinci tuple xbaslangic ve ybaslangic(ok için) 2.si de x-y bitiş koordinatları.
#arrowprops da parametre olarak dictionary alıyor. boş bir dict atayın,  default özelliklerde yine ok işareti cıkaracaktır.Ha ben ok değil de  başka bişey kullanmak istiyorum derseniz,
oDye3U.png

Dict key olarak arrowstyle="->" şeklinde belirtirseniz okunuz aşağıdakiler gibi olacaktır.


oDyw8Q.png



Scatter(Dağılım) Grafiği
Dağılım grafiği makina öğreniminde en çok kullanılan grafik türüdür. Verilerimiz birer nokta ile iki boyutlu düzlemde gösterilir.
2 liste olması gerekiyor elimizde oluşturmak için.
Kod:
A_listesi=np.random.rand(30)
B_listesi=np.random.rand(30)
C_listesi=np.random.rand(10)
D_listesi=np.random.rand(10)
#color=("g","r")
plt.scatter(A_listesi,B_listesi,s=10)
plt.scatter(C_listesi,D_listesi,s=10)
plt.legend(["İlk","İkinci"],loc=1)
loc parametresi lokasyon,yani lejantın nerede olacağını belirlememizi sağlar. 0 yazarsak en uygun yeri kendisi belirleyip koyuyor. 1 sağ üst 2 sol üst 3 sol alt 4 sağ alt.
oDOORe.png
 
Moderatör tarafında düzenlendi:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.