[학습목표]
바이올린플롯으로 데이터의 범위와 분포를 표현할 수 있다.
import matplotlib.pyplot as plt
import pandas as pd
# 그래프에 한글 설정
plt.rcParams['font.family'] = 'NanumGothic'
# 그래프에 마이너스 기호 깨지는 문제 해결
plt.rcParams['axes.unicode_minus'] = False
바이올린플롯
샘플 데이터
- 125명의 점수 데이터
scores = pd.Series([0,10,15,15,15,16,19,20,21,25,25,26,26,29,30,35,36,37,39,40,41,41,44,45,45,45,45,47,
50,50,50,50,51,51,51,53,54,55,55,56,60,61,62,62,63,64,65,65,65,65,66,66,66,66,66,
67,68,68,69,70,70,70,70,70,70,70,70,71,71,71,71,71,72,72,72,72,73,74,74,74,75,75,
76,76,76,77,77,77,77,78,78,78,78,78,79,79,79,79,80,80,80,80,80,80,81,81,81,82,82,
85,85,85,88,88,89,90,90,90,93,93,95,95,95,97,100])
len(scores)
125
바이올린플롯
- plt.violinplot(data)
plt.violinplot(scores)
최대값, 최소값, 평균값, 중간값 표시
- showextrema=True/False : 최대값,최소값에 직선 표시(default:True)
- showmeans=True/False : 평균값에 직선 표시(default:False)
- showmedians=True/False : 중간값에 직선 표시(default:False)
분위수 지정하기
- quantiles=0~1사이의 실수리스트
plt.violinplot(scores, showextrema=True, showmeans=True, showmedians=True
,quantiles=[0.25, 0.75])
plt.show()
스타일 지정하기
- 바이올린플롯 객체를 받아서 스타일을 지정한다.
- 플롯['bodies'][인덱스].set_facecolor(컬러)
- 플롯['cmins'].set_edgecolor(컬러)
- 플롯['cmaxes'].set_edgecolor(컬러)
- 플롯['cbars'].set_edgecolor(컬러)
- 플롯['cmedians'].set_edgecolor(컬러)
- 플롯['cquantiles'].set_edgecolor(컬러)
- 플롯['cmeans'].set_edgecolor(컬러)
v1 = plt.violinplot(scores, showextrema=True, showmeans=True, showmedians=True
,quantiles=[0.25, 0.75])
v1['bodies'][0].set_facecolor('r')
v1['cmins'].set_edgecolor('g')
v1['cmaxes'].set_edgecolor('g')
v1['cbars'].set_edgecolor('k')
v1['cmedians'].set_edgecolor('r')
v1['cquantiles'].set_edgecolor('w')
v1['cmeans'].set_edgecolor('y')
plt.show()
여러 개의 데이터 비교하기
샘플 데이터
- 붓꽃 데이터
import seaborn as sns
iris = sns.load_dataset('iris')
iris.head()
"""
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
바이올린 플롯
기본 그리기
- plt.violinplot(데이터리스트)
plt.violinplot([iris['sepal_length'], iris['sepal_width'], iris['petal_length'], iris['petal_width']])
plt.show()
x틱
plt.violinplot([iris['sepal_length'], iris['sepal_width'], iris['petal_length'], iris['petal_width']])
plt.xticks(range(1,5,1), labels=['sepal_length','sepal_width','petal_length','petal_width'])
plt.show()
평균값, 중간값 표시
plt.violinplot([iris['sepal_length'], iris['sepal_width'], iris['petal_length'], iris['petal_width']]
, showmeans=True, showmedians=True)
plt.xticks(range(1,5,1), labels=['sepal_length','sepal_width','petal_length','petal_width'])
plt.show()
분위수 표시
- quantiles=분위수리스트
데이터별로 각각 지정한다.
plt.violinplot([iris['sepal_length'], iris['sepal_width'], iris['petal_length'], iris['petal_width']]
, showmeans=True, showmedians=True
, quantiles=[[0.25,0.75],[0.25,0.75],[0.25,0.75],[0.25,0.75]])
plt.xticks(range(1,5,1), labels=['sepal_length','sepal_width','petal_length','petal_width'])
plt.show()
스타일 지정하기
- 바이올린플롯 객체를 받아서 스타일을 지정한다.
- 플롯['bodies'][인덱스].set_facecolor(컬러)
- 플롯['cmins'].set_edgecolor(컬러)
- 플롯['cmaxes'].set_edgecolor(컬러)
- 플롯['cbars'].set_edgecolor(컬러)
- 플롯['cmedians'].set_edgecolor(컬러)
- 플롯['cquantiles'].set_edgecolor(컬러)
- 플롯['cmeans'].set_edgecolor(컬러)
v2 = plt.violinplot([iris['sepal_length'], iris['sepal_width'], iris['petal_length'], iris['petal_width']]
, showmeans=True, showmedians=True
, quantiles=[[0.25,0.75],[0.25,0.75],[0.25,0.75],[0.25,0.75]])
v2['bodies'][0].set_facecolor('r')
v2['bodies'][1].set_facecolor('g')
v2['bodies'][2].set_facecolor('b')
v2['bodies'][3].set_facecolor('c')
v2['cmins'].set_edgecolor('r')
v2['cmaxes'].set_edgecolor('r')
v2['cmeans'].set_edgecolor('r')
plt.xticks(range(1,5,1), labels=['sepal_length','sepal_width','petal_length','petal_width'])
plt.grid(axis='y', ls=':', alpha=0.5)
plt.show()
'파이썬 > 시각화 matplot' 카테고리의 다른 글
공통 스타일 지정하기 rcParams (0) | 2023.05.16 |
---|---|
데이터의 비율을 표현하는 파이차트 pie (0) | 2023.05.16 |
데이터의 통계값을 표현하는 박스플롯 boxplot (0) | 2023.05.16 |
데이터의 도수분포를 포현하는 히스토그램 (0) | 2023.05.16 |
색으로 값의 크기를 표현하는 히트맵 (0) | 2023.05.16 |