Come creare un grafico a dispersione seaborn con un coefficiente di correlazione
È possibile utilizzare la seguente sintassi di base per creare un grafico a dispersione in Seaborn e aggiungere un coefficiente di correlazione al grafico:
import scipy import matplotlib. pyplot as plt import seaborn as sns #calculate correlation coefficient between x and y r = scipy. stats . pearsonr (x=df. x , y=df. y )[0] #create scatterplot sns. scatterplot (data=df, x=df. x , y=df. y ) #add correlation coefficient to plot plt. text (5, 30, ' r = ' + str ( round (r,2)))
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: creare un diagramma a dispersione Seaborn con un coefficiente di correlazione
Diciamo che abbiamo il seguente DataFrame dei panda che mostra i punti e gli assist di vari giocatori di basket:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'C', 'C', 'C', 'D', 'D'], ' points ': [12, 11, 18, 15, 14, 20, 25, 24, 32, 30], ' assists ': [4, 7, 7, 8, 9, 10, 10, 12, 10, 15]}) #view DataFrame print (df) team points assists 0 to 12 4 1 to 11 7 2 To 18 7 3 to 15 8 4 B 14 9 5 C 20 10 6 C 25 10 7 C 24 12 8 D 32 10 9 D 30 15
Possiamo utilizzare la seguente sintassi per creare un grafico a dispersione per visualizzare la relazione tra passaggi e punti e utilizzare anche la funzione peppersonr() di scipy per calcolare il coefficiente di correlazione tra queste due variabili:
import scipy import matplotlib. pyplot as plt import seaborn as sns #calculate correlation coefficient between assists and points r = scipy. stats . pearsonr (x=df. assists , y=df. points )[0] #create scatterplot sns. scatterplot (data=df, x=df. assists , y=df. points ) #add correlation coefficient to plot plt. text (5, 30, ' r = ' + str ( round (r,2)))
Dal risultato possiamo vedere che il coefficiente di correlazione di Pearson tra assist e punti è 0,78 .
Correlati: cos’è considerata una correlazione “forte”?
Tieni presente che abbiamo utilizzato la funzione round() per arrotondare il coefficiente di correlazione a due cifre decimali.
Sentiti libero di arrotondare a un numero diverso di cifre decimali e sentiti anche libero di usare l’argomento fontsize per modificare la dimensione del carattere del coefficiente di correlazione sul grafico:
import scipy import matplotlib. pyplot as plt import seaborn as sns #calculate correlation coefficient between assists and points r = scipy. stats . pearsonr (x=df. assists , y=df. points )[0] #create scatterplot sns. scatterplot (data=df, x=df. assists , y=df. points ) #add correlation coefficient to plot plt. text (5, 30, ' r= '+ str ( round (r,4)), fontsize= 20 ))
Si noti che il coefficiente di correlazione è ora arrotondato a quattro cifre decimali e la dimensione del carattere è molto maggiore rispetto all’esempio precedente.
Nota : puoi trovare la documentazione completa per la funzione seaborn scatterplot() qui .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre funzioni comuni in Seaborn:
Come tracciare una distribuzione in Seaborn
Come ordinare boxplot sull’asse x in Seaborn
Come aggiungere una tabella alla trama Seaborn