Сюжет для скрипки с использованием Seaborn

Функция violinplot()
создает такой график и изображает распределение как комбинацию между графиком плотности ядра и коробчатой диаграммой. Он широко используется аналитиками и статистиками для понимания распределения категориальных данных. Его главное преимущество перед традиционными коробчатыми диаграммами состоит в том, что их можно также использовать для распределений с несколькими пиками.
Фигура скрипки в сюжете может быть немного трудной для понимания, но она может отображать разные статистические значения. Следующий рисунок поясняет это.
Помимо DataFrames, функция violinplot()
может работать с одним объектом серии, массивом numpy или вектором списка.
В следующем примере мы построим график распределения скрипичного графика для одной переменной.
import random
import numpy as np
n = random.sample(range(0,50),30)
arr = np.array(n)
sns.violinplot(n)
Обратите внимание, что размер выборки имеет огромное влияние на окончательную фигуру в сюжете скрипки. Сюжет может вводить в заблуждение из-за небольшого размера выборки. Если это все еще немного сбивает с толку, можно построить простой график рассеяния по сценарию скрипки, чтобы лучше понять.
Например,
import random
import numpy as np
n = random.sample(range(0,50),30)
arr = np.array(n)
sns.violinplot(n)
sns.stripplot(n, color = 'red')
Функция stripplot()
здесь строит диаграмму разброса по сюжету скрипки. Точно так же вы можете нанести коробчатый график поверх скрипичного, чтобы понять сходство и различия между ними обоими.
Основное применение violinplot()
- это наборы данных, показывающие распределение данных по нескольким категориям. В приведенном ниже коде мы реализуем это.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame({"Quantity": [5,6,7,8,5,6,7,8,5,6,7,8,5,6,7,8],
"Price": [9,10,15,16,13,14,15,18,11,12,14,15,16,17,18,19],
"Day" : [1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2],
"Product": ['A','A','A','A','B','B','B','B',
'A','A','A','A','B','B','B','B']})
sns.violinplot(data = df, y = "Price", x = "Quantity", hue = "Product")
Обратите внимание, как мы смогли эффективно построить распределение цен на два разных продукта в разных количествах за два дня. Обратите внимание на использование параметра hue
для отображения двух продуктов с разными цветами.
Можно использовать множество других аргументов, чтобы изменить окончательную цифру. Мы можем использовать параметр split
, чтобы легко сравнивать категории. Их порядком можно управлять с помощью параметра order
. Каждое наблюдение можно отобразить внутри графика с помощью параметра inner
.
В приведенном ниже коде мы пытаемся использовать некоторые из этих аргументов.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame({"Quantity": [5,6,7,8,5,6,7,8,5,6,7,8,5,6,7,8],
"Price": [9,10,15,16,13,14,15,18,11,12,14,15,16,17,18,19],
"Day" : [1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2],
"Product": ['A','A','A','A','B','B','B','B',
'A','A','A','A','B','B','B','B']})
sns.violinplot(data = df, y = "Price", x = "Quantity", hue = "Product", inner = 'stick', split = True)
Функция violinplot()
возвращает объект типа оси matplotlib, чтобы использовать все такие функции matplotlib для настройки окончательного рисунка. Если мы хотим вернуть объект типа FacetGrid
, мы можем использовать функцию catplot()
и указать параметр kind
как violin
.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn