Seaborn Swarmplot
산점도는 가장 기본적이고 유용한 그래프 중 하나입니다. Python의 seaborn 모듈은 이러한 그래프를 한 단계 더 발전시켜 범주 형 값을 나타내는 데 사용할 수 있습니다.
스웜 플롯은 범주 형 값을 나타내는 데 사용되는 산점도 유형입니다. 스트립 플롯과 매우 유사하지만 점이 겹치는 것을 방지합니다. seaborn.swarmplot()
을 사용하여 이러한 그래프를 만들 수 있습니다.
표본 크기가 큰 경우이 유형의 그래프를 사용하지 않는 것이 좋습니다.
swarmplot()
함수를 사용하여 다음 코드에서 범주 값에 대한 그래프를 생성합니다.
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.swarmplot(data=df, y="Price", x="Quantity")
위의 예에서hue
매개 변수를swarmplot()
함수에 추가하고 두 개의 다른 제품에 대한 카테고리를 분리 할 수 있습니다. dodge
인수를 사용하고 True로 설정하여 두 제품을 분할 할 수 있습니다.
또한swarmplot()
함수와 함께 다른 인수도 사용할 수 있습니다. 포인트의 크기와 색상은size
및color
인수를 사용하여 변경할 수 있습니다. palette
매개 변수를 사용하여 다른 카테고리에 사용되는 색상 조합을 변경할 수 있습니다. linewidth
인수는 지정된 너비의 포인트에 테두리를 추가합니다. 플로팅 된 카테고리의 순서는order
매개 변수를 사용하여 제어 할 수 있습니다.
다음 예제에서 위의 인수를 사용하려고합니다.
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.swarmplot(
data=df,
y="Price",
x="Quantity",
hue="Product",
dodge=True,
linewidth=2.5,
palette="Set2",
size=10,
)
swarmplot()
은 상자 또는 바이올린 플롯에 대한 좋은 칭찬으로도 사용할 수 있습니다. 데이터 분포에 대한 좋은 아이디어를 제공합니다.
다음 코드를 사용하여 swarm 플롯 위에 상자 플롯을 추가 할 수 있습니다.
import random
import numpy as np
import seaborn as sns
n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.boxplot(n)
sns.swarmplot(n, color="red")
catplot()
함수는 이러한 떼 플롯을 생성 할 수도 있습니다. 이를 위해catplot()
함수의kind
매개 변수 값을swarm
으로 지정해야합니다.
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