Как сделать Violinpot с точками данных в Seaborn?
При анализе и визуализации данных существует множество типов графиков, которые используются для передачи информации в краткой и осмысленной форме. Одним из популярных типов графиков является график скрипки, который полезен для визуализации распределения числовой переменной по различным категориям или группам. Диаграмма Скрипки похожа на ящичную диаграмму, но она предоставляет больше информации о распределении данных, отображая график плотности поверх коробчатой диаграммы. В этом уроке мы узнаем, как создать график скрипки с точками данных в Seaborn, используя наш собственный созданный набор данных.
Чтобы создать сюжет скрипки в Seaborn, мы должны импортировать необходимые библиотеки, такие как Seaborn, Matplotlib и Pandas. Seaborn используется для создания графика, Matplotlib используется для настройки графика, а Pandas используется для хранения данных и управления ими.
Синтаксис
Чтобы создать сюжет для скрипки, вам необходимо следовать следующему синтаксису:
# Create violin plot
sns.violinplot(data=data, x="x_variable", y="y_variable", hue="categorical_variable", split=True)
# Show the plot
plt.show()
Мы вызываем функцию violinplot(), чтобы создать скрипичный сюжет. Мы передаем наши данные, указывая переменные x и y для построения графика, а также переменную оттенка для окраски скрипок с помощью категориальной переменной. Для параметра разделения установлено значение True, чтобы разделить скрипки по категориям. Наконец, мы вызываем функцию show() для отображения графика.
Пример
В этом примере мы создадим набор данных, состоящий из следующих переменных: Категория, Значение 1 и Значение 2. Мы создадим две категории: Категория A и Категория B, по 100 значений в каждой. Значения будут генерироваться случайным образом с использованием библиотеки Numpy.
Теперь, когда мы создали набор данных, мы можем использовать Seaborn для создания графика скрипки. Мы будем использовать функцию violinplot() для создания сюжета. Функция violinplot() принимает следующие аргументы:
x − Имя столбца или индекс переменной для построения графика.
y − Имя столбца или индекс переменной, которая будет использоваться для группировки данных.
data − DataFrame, содержащий данные для построения графика.
inner − Тип графика будет отображаться внутри сюжета скрипки. Значением по умолчанию является «коробка», но мы можем изменить его на «точки», чтобы отображать точки данных внутри графика скрипки.
палитра − Цветовая палитра для использоваться для разных категорий или групп.
Следующий код создаст график скрипки с точками данных —
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Create a dataset with two categories and 100 values in each category
category_a = np.random.normal(0, 1, 100)
category_b = np.random.normal(2, 1, 100)
data = pd.DataFrame({'Category': ['A'] * 100 + ['B'] * 100, 'Value 1': np.concatenate((category_a, category_b)), 'Value 2': np.concatenate((category_b, category_a))})
# Create a Violin plot with data points
sns.violinplot(x='Category', y='Value 1', data=data, inner='points', palette='Set2')
# Customize the plot
plt.title('Violin Plot with Data Points')
plt.xlabel('Category')
plt.ylabel('Value 1')
# Display the plot
plt.show()
Выход
Пример
Создается набор данных результатов экзаменов, который состоит из трех групп (группа A, группа B и группа C) по 10 баллов в каждой. Результаты экзамена жестко запрограммированы в коде, в отличие от случайных данных в предыдущем примере. Затем набор данных преобразуется в фрейм данных Pandas с помощью функции pd.DataFrame.
После этого с помощью функции subplots создается объект фигуры и оси. Затем создается скрипичный график с использованием функции скрипичного графика объекта оси. Для параметра showmedians установлено значение True, чтобы отображать медиану каждой группы на графике.
Метки x и метки настроены для отображения имен групп с помощью функций set_xticks и set_xticklabels, а метки осей x и y устанавливаются с помощью функций set_xlabel и set_ylabel.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# create a dataset of exam scores for three groups of students
data = {'Group A': [75, 80, 85, 90, 70, 65, 90, 85, 80, 75], 'Group B': [80, 85, 90, 95, 75, 70, 95, 90, 85, 80], 'Group C': [85, 90, 95, 100, 80, 75, 100, 95, 90, 85], }
# convert the data to a pandas dataframe
df = pd.DataFrame(data)
# plot the violin plot using matplotlib
fig, ax = plt.subplots()
ax.violinplot(df.values, showmedians=True)
ax.set_xticks(np.arange(1, len(df.columns)+1))
ax.set_xticklabels(df.columns)
ax.set_xlabel('Groups')
ax.set_ylabel('Exam Scores')
plt.show()
Выход
Заключение
Мы обсудили, насколько графики скрипки похожи на ящичковые диаграммы, но показывают более подробное представление о распределении данных. Мы узнали, что Seaborn — это библиотека более высокого уровня, которая обеспечивает более продвинутую и эстетичную статистическую графику, а Matplotlib — это библиотека более низкого уровня, которая обеспечивает больший контроль над деталями графика. Наконец, мы увидели, что скрипичные графики — эффективный способ сравнить распределение данных между различными группами или категориями, что делает их ценным инструментом для исследовательского анализа данных.