AST409 Astronomide Sayısal Çözümleme V. Python’da Grafikler ve Eğri Uyumlama
matplotlib kütüphanesi Python’da grafik çizmek için matplotlib kütüphanesinde yer alan ve matplotlib’in MATLAB gibi grafik üretmesini sağlayan komutların bir koleksiyonu olarak tanımlanabilecek matplolib.pyplot modülünü kullanacağız. Basit bir örnekle başlayalım. Örnek1 : import matplotlib.pyplot as plt plt.plot([1,2,3,4]) plt.xlabel(“x”) plt.ylabel(“y”) plt.show() Örnek2 : plt.plot([1,2,3,4], [1,4,9,16], 'ro') plt.axis([0, 6, 0, 20]) plt.show()
pyplot uygulamaları Örnek 3: Örnek 4: Birkaç grafiği aynı anda farklı sembollerle çizdirebilirsiniz! Örnek 3: import numpy as np import matplotlib.pyplot as plt # 200 ms’lik eşit aralıklarla 0-5 s arası #zaman değerlerimiz olsun t = np.arange(0., 5., 0.2) # Aşağıdaki her bir grafiği farklı #sembollerle gösterelim plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^') plt.show() Yaratmış olduğunuz grafiklerin pek çok özelliğini kontrol edebilirsiniz! Örnek 4: x = np.arange(0,2*np.pi+np.pi/16.0,np.pi/16.0) y = np.sin(x) plt.plot(x, y, 'r-', linewidth = 2.0) plt.show()
pyplot ve çoklu grafikler Birkaç farklı grafiği aynı anda aynı şekil üzerine çizdirebilirsiniz! Örnek 5 : import numpy as np import matplotlib.pyplot as plt def f(t): return np.exp(-t) * np.cos(2*np.pi*t) t1 = np.arange(0.0, 5.0, 0.1) t2 = np.arange(0.0, 5.0, 0.02) plt.figure(1) plt.subplot(211) plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k') plt.subplot(212) plt.plot(t2, np.cos(2*np.pi*t2), 'r--') plt.show()
pyplot ve çoklu grafikler Birkaç farklı grafiği aynı anda farklı şekiller üzerine çizdirebilirsiniz! Örnek 6 : # birinci sekil plt.figure(1) # ilk grafik plt.subplot(211) plt.plot([1,2,3]) # ikinci grafik plt.subplot(212) plt.plot([4,5,6]) # ikinci sekil, ilk grafik varsayilan olarak (111) plt.figure(2) # birinci sekil ilk grafigin basligini belirleyelim plt.title('Python Ogreniyorum!') # grafiklerimizi gosterelim plt.show()
pyplot ve metin yönetimi Grafiklerin üzerine metin (text) ifadeler yerleştirebilirsiniz. Örnek 7 : # verimizi olusturalim mu, sigma = 100, 15 x = mu + sigma * np.random.randn(10000) # verimizden bir histogram olusturalim n, bins, patches = plt.hist(x, 50, normed=1, \ facecolor='g', alpha=0.75) # x eksenine bir baslik verelim plt.xlabel('Zeka') # y eksenine bir baslik verelim plt.ylabel('Olasilik') # grafigimize bir baslik verelim plt.title('IQ Histogrami') # ortalama ve standart sapmayi gosterelim plt.text(60, .025, r'$\mu=100,\ \sigma=15$') # eksen sinirlarimizi belirleyelim plt.axis([40, 160, 0, 0.03]) # grid (izgara) gosterelim plt.grid(True) plt.show()
pyplot ve metin yönetimi (2) Grafikteki noktalarınızı etiketleyebilirsiniz Örnek 8 : # grafigimizi bir degiskene atayalim ax = plt.subplot(111) # t eksenini numpy arange fonksiyonu ile olusturalim t = np.arange(0.0, 5.0, 0.01) # s = cos(2 * PI * t) ifadesiyle fonksiyonumuzu olusturalim s = np.cos(2*np.pi*t) # grafigimizi bir cizim nesnesine alalim line, = plt.plot(t, s, lw=2) # noktamizi etiketleyelim plt.annotate('yerel maksimum', xy=(2, 1), xytext=(3, 1.5), arrowprops=dict(facecolor='black', shrink=0.05), ) # y ekseninin limitlerini belirleyelim plt.ylim(-2,2) plt.show()
Python ve Eğri Uyumlama Basit bir doğru uyumlama örneği ile başlayalım Örnek 9 : import matplotlib.pyplot as plt import numpy as np x = [-7.30000, -4.10000, -1.70000, -0.02564, 1.50000, 4.50000, 9.10000] y = [-0.80000, -0.50000, -0.20000, 0.00000, 0.20000, 0.50000, 0.80000] katsayilar = np.polyfit(x, y, 1) polinom = np.poly1d(katsayilar) y_polinom = polinom(x) print katsayilar print polinom plt.plot(x, y, 'o') plt.plot(x, y_polinom) plt.ylabel('y') plt.xlabel('x') plt.xlim(-10,10) plt.ylim(-1,1) plt.show()
Python ve Eğri Uyumlama Bir de 6. dereceden polinom uyumlaması deneyelim! Örnek 10 : x = [2.53240, 1.91110, 1.18430, 0.95784, 0.33158, -0.19506, -0.82144, -1.64770, -1.87450, -2.2010] y = [-2.50400, -1.62600, -1.17600, -0.87400, -0.64900, -0.477000, -0.33400, -0.20600, -0.10100, -0.00600] katsayilar = np.polyfit(x, y, 6) polinom_6 = np.poly1d(katsayilar) x_polinom6 = np.arange(-2.2, 2.6, 0.1) y_polinom6= polinom_6(x_polinom6) plt.plot(x, y, 'o') plt.plot(x_polinom6, y_polinom6) plt.ylabel('y') plt.xlabel('x') plt.show()
Python ve Lineer Regresyon scipy.stats.linregress modülü kullanarak lineer regresyon Örnek 11 : xi = np.arange(0,9) # x ile degisiminin lineer oldugu tahmininde buundugumuz y degiskenleri y = np.array([19, 20, 20.5, 21.5, 22, 23, 23, 25.5, 24]) egim, y_kesme, r_degeri, p_degeri, std_hata = stats.linregress(xi,y) print 'Korelasyon Katsayisi', r_degeri print ‘Sr degeri', sr_degeri print 'Tahmin uzerindeki standart hata', std_hata dogru = egim*xi+y_kesme plt.plot(xi,dogru,'r-',xi,y,'o') plt.show()