Вступление
Seaborn - одна из наиболее широко используемых библиотек визуализации данных в Python как расширение Matplotlib . Он предлагает простой, интуитивно понятный, но настраиваемый API для визуализации данных.
В этом уроке мы рассмотрим, как построить диаграмму рассеяния в Seaborn . Мы рассмотрим простые точечные диаграммы, множественные точечные диаграммы с FacetGrid, а также трехмерные точечные диаграммы.
Импортировать данные
Мы воспользуемся набором данных World Happiness и сравним показатель счастья с различными характеристиками, чтобы увидеть, что влияет на восприятие счастья в мире:
import pandas as pd
df = pd.read_csv('worldHappiness2016.csv')
Создайте точечную диаграмму в Seaborn
Теперь, когда набор данных загружен, давайте импортируем PyPlot, который мы будем использовать для отображения графика, а также Seaborn. Построим график оценки счастья в зависимости от экономики страны (ВВП на душу населения) :
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
df = pd.read_csv('worldHappiness2016.csv')
sns.scatterplot(data = df, x = "Economy (GDP per Capita)", y = "Happiness Score")
plt.show()
Seaborn упрощает построение базовых графиков, например диаграмм
рассеяния. Нам не нужно возиться с объектом Figure
Axes
или
настраивать что-либо, хотя мы можем, если захотим. Здесь мы предоставили
df
в качестве data
и предоставили функции, которые мы хотим
визуализировать, в качестве аргументов x
и y
Они должны соответствовать данным, представленным в наборе данных, и метками по умолчанию будут их имена. Мы настроим это в следующем разделе.
Теперь, если мы запустим этот код, нас встретят:
{.ezlazyload}
Здесь существует сильная положительная корреляция между экономикой (ВВП на душу населения) и ощущением счастья жителей страны / региона.
Построение множественных точечных диаграмм в Seaborn с помощью FacetGrid
Если вы хотите сравнить более одной переменной с другой, например - среднюю продолжительность жизни, а также оценку счастья в сравнении с экономикой или любые ее вариации, нет необходимости создавать для этого трехмерный график.
Хотя существуют 2D-графики, которые визуализируют корреляции между более чем двумя переменными, некоторые из них не совсем подходят для начинающих.
Seaborn позволяет нам FacetGrid
объект FacetGrid, который мы можем
использовать для фасетирования данных и построения нескольких связанных
графиков, один рядом с другим.
Давайте посмотрим, как это сделать:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
df = pd.read_csv('worldHappiness2016.csv')
grid = sns.FacetGrid(df, col = "Region", hue = "Region", col_wrap=5)
grid.map(sns.scatterplot, "Economy (GDP per Capita)", "Health (Life Expectancy)")
grid.add_legend()
plt.show()
{.ezlazyload}
Здесь мы создали FacetGrid
, передав ему наши данные ( df
). Указав
аргумент col
"Region"
, мы сказали Seaborn, что хотим разбить данные
на регионы и построить диаграмму рассеяния для каждого региона в наборе
данных.
Мы также назначили hue
в зависимости от региона, поэтому каждый регион
имеет свой цвет. Наконец, мы установили аргумент col_wrap
5
чтобы
весь рисунок не был слишком широким - он разбивается на каждые 5
столбцов в новую строку.
К этому объекту grid
map()
наши аргументы. В частности, мы указали
sns.scatterplot
как тип графика, который нам нужен, а также x
и y
мы хотим отобразить на этих графиках разброса.
В результате получается 10 различных графиков разброса, каждый со
связанными x
и y
, разделенными по регионам.
В конце мы также добавили легенду, чтобы помочь идентифицировать цвета.
Построение трехмерной точечной диаграммы в Seaborn
К сожалению, в Seaborn нет встроенных функций 3D. Это расширение Matplotlib и полагается на него для тяжелой работы в 3D. Тем не менее, мы можем стилизовать 3D-график Matplotlib с помощью Seaborn.
Давайте зададим стиль с помощью Seaborn и визуализируем трехмерный график рассеяния счастья, экономики и здоровья:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from mpl_toolkits.mplot3d import Axes3D
df = pd.read_csv('2016.csv')
sns.set(style = "darkgrid")
fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')
x = df['Happiness Score']
y = df['Economy (GDP per Capita)']
z = df['Health (Life Expectancy)']
ax.set_xlabel("Happiness")
ax.set_ylabel("Economy")
ax.set_zlabel("Health")
ax.scatter(x, y, z)
plt.show()
Выполнение этого кода приводит к интерактивной трехмерной визуализации, которую мы можем панорамировать и исследовать в трехмерном пространстве, стилизованной под график Сиборна:
{.ezlazyload}
Настройка точечных диаграмм в Seaborn
Используя Seaborn, легко настраивать различные элементы создаваемых вами
сюжетов. Например, вы можете установить hue
и size
каждого маркера
на точечной диаграмме.
Давайте изменим некоторые параметры и посмотрим, как будет выглядеть график после внесения изменений:
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
df = pd.read_csv('2016.csv')
sns.scatterplot(data = df, x = "Economy (GDP per Capita)", y = "Happiness Score", hue = "Region", size = "Freedom")
plt.show()
Здесь мы установили hue
на Region
что означает, что данные из разных
регионов будут иметь разные цвета. Кроме того, мы установили size
пропорциональный функции свободы . Чем выше коэффициент свободы, тем
крупнее точки:
{.ezlazyload}
Или вы можете установить фиксированный размер для всех маркеров, а также цвет:
sns.scatterplot(data = df, x = "Economy (GDP per Capita)", y = "Happiness Score", hue = "red", size = 5)
Заключение
В этом уроке мы рассмотрели несколько способов построения диаграммы рассеяния с использованием Seaborn и Python.
Если вас интересует визуализация данных и вы не знаете, с чего начать, обязательно ознакомьтесь с нашим комплектом книг по визуализации данных в Python{.ebook-link} :
::: {style=“border: 1px solid #ebebeb;padding: 15px;”} {.ebook-link}
Визуализация данных в Python
::: {.row} ::: {.col-md-4 .col-xs-12} {.ezlazyload .img-responsive .center-block} :::
::: {.col-md-8 .col-xs-12 .my-auto} Станьте опасными с визуализацией данных
✅ 30-дневная гарантия возврата денег без вопросов
✅ от начального до продвинутого
✅ Регулярно обновляется бесплатно (последнее обновление в апреле 2021 г.)
✅ Обновлено с бонусными ресурсами и руководствами ::: ::: :::
Визуализация данных в Python с помощью Matplotlib и Pandas - это книга, предназначенная для абсолютных новичков в работе с Pandas и Matplotlib с базовыми знаниями Python и позволяющая им создать прочную основу для расширенной работы с этими библиотеками - от простых графиков до анимированных трехмерных графиков с интерактивными кнопки.
Он служит подробным руководством, которое научит вас всему, что вам нужно знать о Pandas и Matplotlib, в том числе о том, как создавать типы графиков, которые не встроены в саму библиотеку.
Книга «Визуализация данных в Python» , книга для начинающих и средних разработчиков Python, проведет вас через простые манипуляции с данными с помощью Pandas, охватит основные библиотеки построения графиков, такие как Matplotlib и Seaborn, и покажет, как использовать преимущества декларативных и экспериментальных библиотек, таких как Altair. В частности, на протяжении 11 глав эта книга охватывает 9 библиотек Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas и VisPy.
Он служит уникальным практическим руководством по визуализации данных в виде множества инструментов, которые вы можете использовать в своей карьере.