Seaborn을 사용한 바이올린 플롯

Manav Narula 2024년2월15일
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)

Seaborn의 바이올린 음모

샘플 크기는 바이올린 플롯의 최종 수치에 큰 영향을 미칩니다. 작은 표본 크기의 경우 그림이 잘못 될 수 있습니다. 이것이 여전히 약간 혼란 스러우면 바이올린 플롯 위에 간단한 산점도를 그려 더 잘 이해할 수 있습니다.

예를 들면

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

샘플 크기가 다른 seaborn의 바이올린 플롯

여기서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")

데이터 분포를 보여주는 seaborn의 바이올린 플롯

2 일 동안 서로 다른 수량의 서로 다른 두 제품 가격 분포를 어떻게 효율적으로 플로팅 할 수 있었는지 주목하십시오. 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
)

내부 매개 변수가있는 seaborn의 바이올린 플롯

violinplot()함수는 matplotlib 축 유형 객체를 반환하여 이러한 모든 matplotlib 함수를 사용하여 최종 그림을 사용자 정의합니다. FacetGrid유형 객체를 반환하려면catplot()함수를 사용하고kind매개 변수를violin으로 지정할 수 있습니다.

작가: Manav Narula
Manav Narula avatar Manav Narula avatar

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