Как создать диаграмму рассеяния сиборна с коэффициентом корреляции


Вы можете использовать следующий базовый синтаксис, чтобы создать диаграмму рассеяния в Seaborn и добавить к графику коэффициент корреляции :

 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)))

В следующем примере показано, как использовать этот синтаксис на практике.

Пример. Создайте диаграмму рассеяния Seaborn с коэффициентом корреляции.

Допустим, у нас есть следующий DataFrame pandas, который показывает очки и передачи различных баскетболистов:

 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

Мы можем использовать следующий синтаксис для создания диаграммы рассеяния для визуализации взаимосвязи между проходами и точками, а также использовать функцию pearsonr() scipy для расчета коэффициента корреляции между этими двумя переменными:

 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))) 

Морское облако точек с коэффициентом корреляции

Из результата мы видим, что коэффициент корреляции Пирсона между передачами и очками составляет 0,78 .

Связанный: Что считается «сильной» корреляцией?

Обратите внимание, что мы использовали функцию round() для округления коэффициента корреляции до двух десятичных знаков.

Не стесняйтесь округлять до другого количества десятичных знаков, а также не стесняйтесь использовать аргумент размер шрифта , чтобы изменить размер шрифта коэффициента корреляции на графике:

 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 )) 

Обратите внимание, что коэффициент корреляции теперь округлен до четырех знаков после запятой, а размер шрифта значительно больше, чем в предыдущем примере.

Примечание . Полную документацию по функции seaborn scatterplot() можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные функции в seaborn:

Как построить распределение в Seaborn
Как заказать коробчатые диаграммы по оси X в Seaborn
Как добавить таблицу на график Сиборна

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *