Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- matplotlib
- 리눅스
- 파이썬 시각화
- Pandas
- python visualization
- 블로그
- 한빛미디어
- 서평단
- Python
- Google Analytics
- 매틀랩
- 서평
- 한빛미디어서평단
- Visualization
- Blog
- Tistory
- 독후감
- SQL
- MATLAB
- 파이썬
- 통계학
- Ga
- tensorflow
- 텐서플로
- 월간결산
- Linux
- 티스토리
- MySQL
- 시각화
- 딥러닝
Archives
- Today
- Total
pbj0812의 코딩 일기
[PYTHON] matplotlib 으로 FacetGrid 함수 구현하기 본문
0. 목표
- matplotlib 으로 FacetGrid 구현하기
1. FacetGrid 예제
import seaborn as sns
tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips, col="sex", row="time", margin_titles=True, despine=False)
g.map_dataframe(sns.scatterplot, x="total_bill", y="tip")
g.set_axis_labels("Total bill", "Tip")
g.fig.subplots_adjust(wspace=0, hspace=0)
2. 실습
1) library 호출
import matplotlib.pyplot as plt
2) 함수 작성
(1) 도화지 분할
(2) 카테고리 마다의 유니크 항목 구하기
(3) 칸마다 그림 그리기
(4) 각 그림에서의 tick 최소값, 최대값 가져오기
(5) 모든 그림에 전체 그림의 tick 최소값, 최대값 적용
(6) tick, label, title 데코레이션
def FacetGrid(df, row, col, xx, yy):
# 1
fig, ax = plt.subplots(len(df[col].unique()), len(df[row].unique()))
fig.subplots_adjust(wspace=0, hspace=0)
# 2
X = df[row].unique()
Y = df[col].unique()
fig.set_size_inches(len(X) * 5, len(Y) * 5)
x_min = []
y_min = []
x_max = []
y_max = []
for i in range(len(X)):
for j in range(len(Y)):
# 3
x = df[(df[row] == X[i]) & (df[col] == Y[j])][xx]
y = df[(df[row] == X[i]) & (df[col] == Y[j])][yy]
ax[i][j].plot(x, y, 'bo')
# 4
x_min.append(min(ax[i][j].get_xticks()))
x_max.append(max(ax[i][j].get_xticks()))
y_min.append(min(ax[i][j].get_yticks()))
y_max.append(max(ax[i][j].get_yticks()))
for i in range(len(X)):
for j in range(len(Y)):
# 5
ax[i][j].set_xlim(min(x_min), max(x_max))
ax[i][j].set_ylim(min(y_min), max(y_max))
# 6
if i == 0:
ax[i][j].set_xticks([])
ax[i][j].set_title(row + ' = ' +X[j], fontsize = 20)
else:
ax[i][j].set_xlabel(xx, fontsize = 20)
if j != 0:
ax[i][j].set_yticks([])
ax2 = ax[i][j].twinx()
ax2.set_yticks([])
ax2.set_ylabel(col + ' = ' + Y[i], fontsize = 20, rotation = -90, labelpad = 20)
else:
ax[i][j].set_ylabel(yy, fontsize = 20)
3. 결과
FacetGrid(tips, 'sex', 'time', 'total_bill', 'tip')
4. 참고
- matplotlib.axes.Axes.set_ylabel
- Matplotlib 에서 X 축 눈금 레이블 텍스트를 회전하는 방법
- matplotlib y-axis label on right side
- [python] matplotlib 플롯에서 xticks를 제거 하시겠습니까?
- 목록에서 matplotlib 자동 y 틱 값 가져 오기
'ComputerLanguage_Program > PYTHON' 카테고리의 다른 글
[PYTHON] add_patch 를 이용한 violinplot 구현하기 (0) | 2021.08.04 |
---|---|
[PYTHON] 상자 그림(box plot) 구현하기 (0) | 2021.08.03 |
[PYTHON] TextArea 를 이용한 나만의 범례 만들기 (0) | 2021.07.31 |
[PYTHON] offsetbox 를 이용한 피카츄(이미지) 산점도 그리기 (0) | 2021.07.30 |
[PYTHON] matplotlib 의 barh 로 분수 표현하기 (0) | 2021.07.28 |
Comments