Matplotlib Dağılımı
Dağılım Grafikleri Oluşturma
Pyplot ile, scatter()
bir dağılım grafiği çizmek için işlevi kullanabilirsiniz.
İşlev scatter()
, her gözlem için bir nokta çizer. Biri x ekseninin değerleri için, diğeri y eksenindeki değerler için olmak üzere aynı uzunlukta iki diziye ihtiyaç duyar:
Örnek
Basit bir dağılım grafiği:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y)
plt.show()
Sonuç:
Yukarıdaki örnekteki gözlem, geçen 13 arabanın sonucudur.
X ekseni, arabanın kaç yaşında olduğunu gösterir.
Y ekseni, arabanın geçtiği andaki hızını gösterir.
Gözlemler arasında herhangi bir ilişki var mı?
Görünüşe göre araba ne kadar yeniyse o kadar hızlı sürüyor, ancak bu bir tesadüf olabilir, sonuçta sadece 13 araba kaydettik.
Arsaları Karşılaştır
Yukarıdaki örnekte, hız ve yaş arasında bir ilişki var gibi görünüyor, peki ya başka bir günün gözlemlerini de çizersek? Dağılım grafiği bize başka bir şey söyleyecek mi?
Örnek
Aynı şekle iki grafik çizin:
import matplotlib.pyplot as plt
import numpy as np
#day one, the age
and speed of 13 cars:
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x,
y)
#day two, the age and speed of 15 cars:
x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y)
plt.show()
Sonuç:
Not: İki grafik, varsayılan olarak mavi ve turuncu olmak üzere iki farklı renkle çizilir, bu bölümün ilerleyen bölümlerinde renkleri nasıl değiştireceğinizi öğreneceksiniz.
İki grafiği karşılaştırarak, ikisinin de bize aynı sonucu verdiğini söyleyebiliriz: araba ne kadar yeniyse, o kadar hızlı sürer.
Renkler
color
veya c
argümanıyla her dağılım grafiği için kendi renginizi ayarlayabilirsiniz
:
Örnek
İşaretçilerin kendi rengini ayarlayın:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x,
y, color = 'hotpink')
x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y, color = '#88c999')
plt.show()
Sonuç:
Her Noktayı Renklendir
c
Bağımsız değişken için bir dizi renk kullanarak her nokta için belirli bir renk bile ayarlayabilirsiniz
:
Not: Bunun için argümanı kullanamazsınız ,color
sadece c
argümanı kullanabilirsiniz.
Örnek
İşaretçilerin kendi rengini ayarlayın:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array(["red","green","blue","yellow","pink","black","orange","purple","beige","brown","gray","cyan","magenta"])
plt.scatter(x, y, c=colors)
plt.show()
Sonuç:
Renk Haritası
Matplotlib modülünde bir dizi kullanılabilir renk haritası vardır.
Renk haritası, her rengin 0 ile 100 arasında bir değere sahip olduğu bir renk listesi gibidir.
İşte bir renk haritası örneği:
Bu renk haritasına 'viridis' denir ve gördüğünüz gibi mor renk olan 0 ile sarı renk olan 100 arasında değişir.
ColorMap Nasıl Kullanılır
Renk haritasını, bu durumda Matplotlib'de bulunan yerleşik renk haritalarından biri olan cmap
renk haritasının değeriyle birlikte anahtar kelime argümanıyla
belirtebilirsiniz.'viridis'
Ek olarak, dağılım grafiğindeki her nokta için bir değer olan (0'dan 100'e kadar) değerler içeren bir dizi oluşturmanız gerekir:
Örnek
Bir renk dizisi oluşturun ve dağılım grafiğinde bir renk haritası belirtin:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0,
10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
plt.scatter(x, y, c=colors, cmap='viridis')
plt.show()
Sonuç:
plt.colorbar()
Aşağıdaki ifadeyi ekleyerek renk haritasını çizime dahil edebilirsiniz :
Örnek
Gerçek renk haritasını ekleyin:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0,
10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
plt.scatter(x, y, c=colors, cmap='viridis')
plt.colorbar()
plt.show()
Sonuç:
Mevcut Renk Haritaları
Yerleşik renk haritalarından herhangi birini seçebilirsiniz:
Name | Reverse | |||
---|---|---|---|---|
Accent | Accent_r | |||
Blues | Blues_r | |||
BrBG | BrBG_r | |||
BuGn | BuGn_r | |||
BuPu | BuPu_r | |||
CMRmap | CMRmap_r | |||
Dark2 | Dark2_r | |||
GnBu | GnBu_r | |||
Greens | Greens_r | |||
Greys | Greys_r | |||
OrRd | OrRd_r | |||
Oranges | Oranges_r | |||
PRGn | PRGn_r | |||
Paired | Paired_r | |||
Pastel1 | Pastel1_r | |||
Pastel2 | Pastel2_r | |||
PiYG | PiYG_r | |||
PuBu | PuBu_r | |||
PuBuGn | PuBuGn_r | |||
PuOr | PuOr_r | |||
PuRd | PuRd_r | |||
Purples | Purples_r | |||
RdBu | RdBu_r | |||
RdGy | RdGy_r | |||
RdPu | RdPu_r | |||
RdYlBu | RdYlBu_r | |||
RdYlGn | RdYlGn_r | |||
Reds | Reds_r | |||
Set1 | Set1_r | |||
Set2 | Set2_r | |||
Set3 | Set3_r | |||
Spectral | Spectral_r | |||
Wistia | Wistia_r | |||
YlGn | YlGn_r | |||
YlGnBu | YlGnBu_r | |||
YlOrBr | YlOrBr_r | |||
YlOrRd | YlOrRd_r | |||
afmhot | afmhot_r | |||
autumn | autumn_r | |||
binary | binary_r | |||
bone | bone_r | |||
brg | brg_r | |||
bwr | bwr_r | |||
cividis | cividis_r | |||
cool | cool_r | |||
coolwarm | coolwarm_r | |||
copper | copper_r | |||
cubehelix | cubehelix_r | |||
flag | flag_r | |||
gist_earth | gist_earth_r | |||
gist_gray | gist_gray_r | |||
gist_heat | gist_heat_r | |||
gist_ncar | gist_ncar_r | |||
gist_rainbow | gist_rainbow_r | |||
gist_stern | gist_stern_r | |||
gist_yarg | gist_yarg_r | |||
gnuplot | gnuplot_r | |||
gnuplot2 | gnuplot2_r | |||
gray | gray_r | |||
hot | hot_r | |||
hsv | hsv_r | |||
inferno | inferno_r | |||
jet | jet_r | |||
magma | magma_r | |||
nipy_spectral | nipy_spectral_r | |||
ocean | ocean_r | |||
pink | pink_r | |||
plasma | plasma_r | |||
prism | prism_r | |||
rainbow | rainbow_r | |||
seismic | seismic_r | |||
spring | spring_r | |||
summer | summer_r | |||
tab10 | tab10_r | |||
tab20 | tab20_r | |||
tab20b | tab20b_r | |||
tab20c | tab20c_r | |||
terrain | terrain_r | |||
twilight | twilight_r | |||
twilight_shifted | twilight_shifted_r | |||
viridis | viridis_r | |||
winter | winter_r |
Boyut
s
Argümanla noktaların boyutunu değiştirebilirsiniz
.
Tıpkı renkler gibi, boyut dizisinin de x ve y ekseni dizileriyle aynı uzunlukta olduğundan emin olun:
Örnek
İşaretçiler için kendi bedeninizi ayarlayın:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
sizes =
np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])
plt.scatter(x,
y, s=sizes)
plt.show()
Sonuç:
Alfa
alpha
Argümanla noktaların şeffaflığını ayarlayabilirsiniz
.
Tıpkı renkler gibi, boyut dizisinin de x ve y ekseni dizileriyle aynı uzunlukta olduğundan emin olun:
Örnek
İşaretçiler için kendi bedeninizi ayarlayın:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
sizes =
np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])
plt.scatter(x,
y, s=sizes, alpha=0.5)
plt.show()
Sonuç:
Renk Boyutunu ve Alfa'yı Birleştirin
Farklı boyutlarda bir renk haritasını noktalar üzerinde birleştirebilirsiniz. Bu, noktalar şeffafsa en iyi şekilde görselleştirilir:
Örnek
x noktaları, y noktaları, renkler ve boyutlar için 100 değer içeren rastgele diziler oluşturun:
import matplotlib.pyplot as plt
import numpy as np
x =
np.random.randint(100, size=(100))
y = np.random.randint(100, size=(100))
colors = np.random.randint(100, size=(100))
sizes = 10 * np.random.randint(100,
size=(100))
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='nipy_spectral')
plt.colorbar()
plt.show()
Sonuç: