x ekseninde b, y ekseninde d, renk olarak a, grafik nokta boyutu c değerinin 50 katı olacağı şekilde bir dağılım (scatter) grafiği oluşturunuz. Renk haritası olarak 'viridis' kullanınız.
Arkadaşlar sorum yukarıdaki gibi ödev 10 sorudan oluşuyor hepsini yaptım bu kaldı bu maddeden birşey anlamadım. Ne yapmam gerektiğini bilen var mı acaba. Veriyi çekmem gereken tablonun ilk 5 satırı ekteki gibi toplam 500 satır veri var.
Python Dağılım Grafiği
Dağılım grafiği, iki değişkenin değerlerinin iki eksen boyunca çizildiği bir grafiktir. İki değişken arasındaki ilişkiyi görselleştirmenize yardımcı olan en temel çizim türüdür.
Dağılım grafiği nedir?
Dağılım grafiği, iki eksen boyunca iki veri kümesinin grafiğidir. İki değişken arasındaki ilişkiyi görselleştirmek için kullanılır.
Y ekseni boyunca değer, X ekseni arttıkça (veya azaldıkça) artıyor gibi görünüyorsa, pozitif (veya negatif) bir doğrusal ilişkiye işaret ediyor olabilir. Oysa noktalar belirgin bir model olmadan rastgele dağıtılırsa, bu muhtemelen bir bağımlı ilişki eksikliğini gösterebilir.
Python matplotlib'de dağılım grafiği, veya . Bu işlevleri kullanarak, noktaların boyutunu, rengini veya şeklini değiştirmek gibi dağılım grafiğinize daha fazla özellik ekleyebilirsiniz.pyplot.plot()pyplot.scatter()
Peki vs arasındaki fark nedir?plt.scatter()plt.plot()
İki fonksiyon arasındaki fark şudur:
uyguladığınız herhangi bir özellik (renk, şekil, noktaların boyutu) tüm noktalara uygulanırken , her noktanın görünümünde daha fazla kontrole sahip olursunuz.pyplot.plot()pyplot.scatter()
Yani, her noktanın (veri noktasının) rengini, şeklini ve boyutunu başka bir değişkene göre değiştirebilirsiniz. Hatta aynı değişken (y). Oysa ile ayarladığınız özellikler grafikteki tüm noktalara uygulanacaktır.plt.scatter()pyplot.plot()
Öncelikle kullanacağım kütüphaneleri import edeceğim.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams.update({'figure.figsize'10,8), 'figure.dpi':100})
İşlev , çizim şeklinin varsayılan parametrelerini değiştirmek için kullanılır.plt.rcParams.update()
Python'da Temel Dağılım grafiği
İlk olarak, kullanarak yapay veriler oluşturalım . no belirtmeniz gerekir. argüman olarak ihtiyaç duyduğunuz noktaların sayısı.np.random.randint()
Ayrıca ihtiyacınız olan rastgele değişkenin alt ve üst limitini de belirleyebilirsiniz.
Ardından matplotlib kullanarak bir dağılım grafiği çizmek için işlevi kullanın. Bağımsız değişken olarak x ve y değişkenlerini belirtmeniz gerekir.plt.scatter()
plt.title()arsanıza başlık ayarlamak için kullanılır.
plt.xlabel()x eksenini etiketlemek için kullanılır.
plt.ylabel()y eksenini etiketlemek için kullanılır.
# Simple Scatterplot
x = range(50)
y = range(50) + np.random.randint(0,30,50)
plt.scatter(x, y)
plt.rcParams.update({'figure.figsize'10,8), 'figure.dpi':100})
plt.title('Simple Scatter plot')
plt.xlabel('X - value')
plt.ylabel('Y - value') plt.show()
Noktalar arasında pozitif bir doğrusal ilişki olduğunu görebilirsiniz. Yani, X arttıkça Y de artar, çünkü Y aslında sadece X + rastgele_sayıdır.
Noktaların renginin Y değerine (veya aynı boyuttaki başka bir değişkene) bağlı olarak değişmesini istiyorsanız, cbağımsız değişkeni kullanarak her noktanın alması gereken rengi belirtin.
X ile aynı boyutta farklı değişken de sağlayabilirsiniz.
# Simple Scatterplot with colored points
x = range(50)
y = range(50) + np.random.randint(0,30,50)
plt.rcParams.update({'figure.figsize'
10,8), 'figure.dpi':100})
plt.scatter(x, y, c=y, cmap='Spectral') plt.colorbar()
plt.title('Simple Scatter plot')
plt.xlabel('X - value') plt.ylabel('Y - value') plt.show()
Katlanarak artan ilişki ile bir veri seti oluşturalım ve grafiği görselleştirelim.
# Scatterplot of non-random vzriables
x=np.arange(1,10,0.2)
y= np.exp(x) plt.scatter(x,y)
plt.rcParams.update({'figure.figsize'10,8), 'figure.dpi':100})
plt.title('Exponential Relation dataset') plt.show()
np.arrange(lower_limit, upper_limit, interval)
'aralık' no'lu bir adımla alt limit ve üst limit arasında bir veri seti oluşturmak için kullanılır. puan.
Şimdi x ve y ekseni arasında üstel bir ilişki olduğunu görebilirsiniz.
Dağılım grafiği ile korelasyon
1) y'nin değeri x'in değeriyle artıyorsa, değişkenlerin pozitif bir korelasyona sahip olduğunu söyleyebiliriz .
2) y'nin değeri, x'in değeriyle birlikte azalırsa, değişkenlerin negatif bir korelasyona sahip olduğunu söyleyebiliriz .
3) y'nin değeri x'ten bağımsız olarak rastgele değişiyorsa, sıfır korelasyona sahip olduğu söylenir .
# Scatterplot and Correlations
# Data x=np.random.randn(100)
y1= x*5 +9
y2= -5*x
y3=np.random.randn(100)
# Plot
plt.rcParams.update({'figure.figsize'10,8), 'figure.dpi':100})
plt.scatter(x, y1, label=f'y1 Correlation = {np.round(np.corrcoef(x,y1)[0,1], 2)}')
plt.scatter(x, y2, label=f'y2 Correlation = {np.round(np.corrcoef(x,y2)[0,1], 2)}')
plt.scatter(x, y3, label=f'y3 Correlation = {np.round(np.corrcoef(x,y3)[0,1], 2)}')
# Plot
plt.title('Scatterplot and Correlations')
plt.legend()
plt.show()
Yukarıdaki grafikte, mavi çizginin pozitif bir korelasyon gösterdiğini, turuncu çizginin negatif bir korelasyon gösterdiğini ve yeşil noktaların x değerleri ile hiçbir ilişki göstermediğini (bağımsız olarak rastgele değişir) görebilirsiniz.
Nokta gruplarının rengini değiştirme
Saçılma grafiğini temsil edecek rengi değiştirmek için komutu kullanın .color ='____'
# Scatterplot - Color Change
x = np.random.randn(50)
y1 = np.random.randn(50)
y2= np.random.randn(50)
# Plot
plt.scatter(x,y1,color='blue')
plt.scatter(x,y2,color= 'red')
plt.rcParams.update({'figure.figsize'10,8), 'figure.dpi':100})
# Decorate plt.title('Color Change')
plt.xlabel('X - value')
plt.ylabel('Y - value')
plt.show()
Renk ve İşaretçiyi Değiştirme
Dağılım grafiğinde işaretleyici türünü değiştirmek için komutu kullanın .marker =_____
['.','o','v','^','>','<','s','p','*','h','H','D',' d','1′,”,”] – Bunlar, arsanız için kullanabileceğiniz işaret türleridir.
# Scatterplot of different distributions. Color and Shape of Points.
x = np.random.randn(500)
y1 = np.random.randn(500)
y2 = np.random.chisquare(10, 500)
y3 = np.random.poisson(5, 500)
# Plot
plt.rcParams.update({'figure.figsize'10,8), 'figure.dpi':100})
plt.scatter(x,y1,color='blue', marker= '*', label='Standard Normal')
plt.scatter(x,y2,color= 'red', marker='v', label='Chi-Square')
plt.scatter(x,y3,color= 'green', marker='.', label='Poisson')
# Decorate
plt.title('Distributions: Color and Shape change')
plt.xlabel('X - value')
plt.ylabel('Y - value')
plt.legend(loc='best')
plt.show()
Seaborn Kullanarak Doğrusal Sığdırma Grafiğine Sahip Dağılım Grafiği
Seaborn'daki işlevi kullanarak en uygun satır için veri kümesini sığdırmaya çalışalım.lmplot()
mtcars veri setini kullanalım.
Veri setini verilen adresten indirebilirsiniz:
Kod:
https://www.kaggle.com/ruiromanini/mtcars/download
Şimdi mpgve displsütun arasında doğrusal bir uyum olup olmadığını deneyelim.
# Linear - Line of best fit
import seaborn as sns
url = 'https://gist.githubusercontent.com/...93cd87c283ce766e7ac6b329ee7cc2e1d1/mtcars.csv'
df=pd.read_csv(url)
plt.rcParams.update({'figure.figsize'10,8), 'figure.dpi':100})
sns.lmplot(x='mpg', y='disp', data=df)
plt.title("Scatter Plot with Linear fit");
2 sütun arasında negatif bir korelasyon elde ettiğimizi görebilirsiniz.
# Scatter Plot with lowess line fit
url = 'https://gist.githubusercontent.com/...93cd87c283ce766e7ac6b329ee7cc2e1d1/mtcars.csv'
df=pd.read_csv(url)
sns.lmplot(x='mpg', y='disp', data=df, lowess=True)
plt.title("Scatter Plot with Lowess fit");
Seaborn kullanan Histogramlarla Dağılım Grafiği
Hem x hem de y değerlerinin histogramları olarak dağılımıyla birlikte dağılım grafiğini temsil etmek için seaborn'da ortak çizim işlevini kullanın.
Fonksiyonu x, y ve datset ile argüman olarak kullanın .sns.jointplot()
import seaborn as sns
x = np.random.randn(100)
y1 = np.random.randn(100)
plt.rcParams.update({'figure.figsize'10,8), 'figure.dpi':100})
sns.jointplot(x=x,y=y1);
Gördüğünüz gibi, x ve y değeri için dağılım grafiğini de alıyoruz.
Kabarcık arsa
Kabarcık grafiği, üçüncü bir boyutun eklendiği bir dağılım grafiğidir: ek bir değişkenin değeri, noktaların boyutu aracılığıyla temsil edilir.
sNoktaların boyutunu temsil eden dağılım grafiğine başka bir komut eklemeniz gerekir .
# Bubble Plot. The size of points changes based on a third varible.
x = np.random.rand(100)
y = np.random.rand(100)
s = np.random.rand(100)*200
plt.scatter(x, y, s=s,color='red')
plt.show()
Kabarcık boyutu üçüncü boyutun değerini temsil eder, eğer kabarcık boyutu daha büyükse o noktada z değerinin büyük olduğu anlamına gelir.
mtcars Veri Kümesinin Keşifsel Analizi
mtcars veri seti, birden fazla araba modelinin kilometre ve araç özelliklerini içerir.Veri seti buradan indirilebilir .(
Kod:
https://www.kaggle.com/ruiromanini/mtcars
)
Keşif analizinin amacı, çeşitli araç özellikleri ile kilometre arasındaki ilişkiyi anlamaktır.
df=pd.read_csv("mtcars.csv")
df.head()
Veri setinin bir araba hakkında farklı bilgiler içerdiğini görebilirsiniz.
mpgÖnce ve arasındaki dağılımı görmek için bir dağılım grafiği görelim dispve bunların histogramik dağılımı. Bunu seaborn'daki işlevi kullanarak yapabilirsiniz.jointplot()
# joint plot for finding distribution
sns.jointplot(x=df["mpg"], y=df["disp"],color='red', kind='scatter')
<seaborn.axisgrid.JointGrid at 0x7fbf16fcc5f8>
En iyi uyan Çoklu Hat
Eğer x ve y arasında birden fazla özellik kategorisi için lineer regresyon uyumu yapmanız gerekiyorsa, bu durumda olduğu gibi, kategorileri buna göre bölüyorum gearve buna göre lineer bir çizgiye sığdırmaya çalışıyorum. Bunun için fonksiyondaki argümanı kullanın .hue=lmplot()
# Linear - Line of best fit
import seaborn as sns
df=pd.read_csv('mtcars.csv')
plt.rcParams.update({'figure.figsize'10,8), 'figure.dpi':100})
sns.lmplot(x='mpg', y='disp',hue='gear', data=df);
İşlevin, veri kümesindeki 3 dişli kategorisi için 3 farklı çizgi yerleştirdiğini görün.
Farklı kategoriler için renk ve stil ayarlama
Veri setini farklı dişli kategorilerine göre ayırdım. Sonra işlevi kullanarak bunları ayrı ayrı çizdim .scatter()
# Color and style change according to category
# Data
df=pd.read_csv('mtcars.csv')
df1=df[df['gear']==3]
df2=df[df['gear']==4]
df3=df[df['gear']==5]
# PLOT
plt.scatter(df1['mpg'],df1['disp'],color='blue', marker= '*', label='gear=3')
plt.scatter(df2['mpg'],df2['disp'],color= 'red', marker='v', label='gear=4')
plt.scatter(df3['mpg'],df3['disp'],color= 'green', marker='.', label='gear=5')
plt.legend()
<matplotlib.legend.Legend at 0x7fbf171b59b0>
Dağılım Grafiğinde Metin Açıklaması
Grafiğinize herhangi bir metin eklemeniz gerekiyorsa, işlevi metinle birlikte kullanın ve metni argüman olarak eklemeniz gereken koordinatları kullanın.plt.text()
# Text annotation in scatter plot
df=pd.read_csv('mtcars.csv')
df1=df[df['gear']==3]
df2=df[df['gear']==4]
df3=df[df['gear']==5]
# Plot
plt.scatter(df1['mpg'],df1['disp'],color='blue', marker= '*', label='gear=3')
plt.scatter(df2['mpg'],df2['disp'],color= 'red', marker='v', label='gear=4')
plt.scatter(df3['mpg'],df3['disp'],color= 'green', marker='.', label='gear=5')
plt.legend()
# Text Annotate
plt.text(21.5+0.2, 255, "gear=3", horizontalalignment='left', size='medium', color='blue', weight='semibold')
plt.text(26+0.2, 120, "gear=5", horizontalalignment='left', size='medium', color='green', weight='semibold')
plt.text(24.5+0.2, 145, "gear=4", horizontalalignment='left', size='medium', color='red', weight='semibold')
Text(24.7, 145, 'gear=4')
Kategorik Değişkenli Kabarcık Grafiği
Normalde bir dağılım grafiği (x ve y) çizmek için 2 değişken kullanacaksınız, sonra noktaların rengiyle ima edilecek başka bir kategorik değişken ekledim, ayrıca değeri her birinin yoğunluğuna göre ima edilecek başka bir değişken ekledim. renk.df['carb']df['wt']
# Bubble Plot
url = 'https://gist.githubusercontent.com/...93cd87c283ce766e7ac6b329ee7cc2e1d1/mtcars.csv'
df=pd.read_csv(url)
# Plot
plt.scatter(df['mpg'],df['disp'],alpha =0.7, s=100* df['wt'], c=df['carb'],cmap='plasma')
# Decorate
plt.xlabel('MPG')
plt.ylabel('DISPLACEMENT');
plt.title('Bubble Plot')
plt.legend();
No handles with labels found to put in legend.
Değere mpgkarşı dispdeğerin grafiğini çizdim ve ayrıca bunları değere göre farklı renklere ayırdım carbve her bir balonun boyutu değeri temsil ediyor wt.
alphaparametre grafiğin renk yoğunluğunu değiştirmek için kullanılır. Daha fazla aplha, renk yoğunluğu olacaktır.
Kategorik Arsa
# Categorical Plot
sns.catplot(x="cyl", y="disp", hue="gear", kind="swarm", data=df);
plt.title('Categorical Plot')
sns.catplot()birkaç görsel temsilden birini kullanarak sayısal ve bir veya daha fazla kategorik değişken arasındaki ilişkiyi gösteren birkaç eksen düzeyinde işleve erişim sağlamak için kullanılır.
Verileri başka kategorilere bölmek için komutu kullanın .hue=
Kaynak Çeviri :
Kod:
https://www.machinelearningplus.com/plots/python-scatter-plot/