Recent Posts
Recent Comments
Archives
반응형
250x250
«   2024/05   »
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
Today
Yesterday

Total
05-03 01:47
관리 메뉴

Hey Tech

[Python] twinx를 활용한 x축 공유(이중축) 그래프 시각화 본문

AI & 빅데이터/데이터 분석 with Python

[Python] twinx를 활용한 x축 공유(이중축) 그래프 시각화

Tony Park 2022. 9. 19. 00:09
728x90
반응형

👨‍💻 들어가며

본 포스팅에서는 아래의 그림처럼, 파이썬 twinx를 활용하여 x축을 공유하는 2개 이상의 그래프를 한 번에 시각화하는 방법을 소개합니다.

x축을 공유하는 그래프 시각화

Step 1.  패키지 import

데이터 시각화를 위한 matplotlib 패키지를 설치하고 import 합니다.

import matplotlib.pyplot as plt

🎯 패키지 설치방법

더보기

pip install matplotlib

Step 2.  데이터셋 준비

저는 연도별 데이터 건수를 저장한 series 타입의 데이터를 활용할 계획입니다.

1) 첫 번째 데이터셋

첫 번째 데이터셋 예제

2) 두  번째 데이터셋

두 번째 데이터셋 예제

Step 3.  x축, y축 데이터 분리

x축과 y축에 각각 시각화할 데이터를 각각 나눕니다.

x1 = dataset_pos_y.index
y1 = dataset_pos_y

x2 = dataset_neg_y.index
y2 = dataset_neg_y

Step 4.  데이터 시각화

twinx()는 x축을 공유하고, twiny()는 y축을 공유합니다.

3개 이상의 그래프를 시각화할 때에도 마찬가지로, ax3 = ax.twinx()와 같이 선언해 준 후 시각화 코드를 작성하시면 됩니다.

fig, ax = plt.subplots()
fig.set_size_inches(60, 24)

#================= 1번째 데이터 시각화 =================#
# 선 그래프 시각화 옵션 | color: 선 색깔, linewidth: 선 굵기, marker 선택
line1 = ax.plot(y1, 'o-', label = 'positive', color = 'blue', linewidth = 3)
# 값 출력
for i, v in enumerate(x1):
    plt.text(v, y1[i], y1[i],
             fontsize = 35,  # 텍스트 크기
             color = 'blue', # 텍스트 색깔
             horizontalalignment ='center', # 수평정렬 옵션
             verticalalignment = 'bottom',  # 수직정렬 옵션
             rotation = 15)
plt.xticks(x1, fontsize = 40, rotation = 15) # x축 눈금
plt.yticks(fontsize = 35) # y축 눈금
plt.xlabel('Year', fontsize = 50) # x축 이름
plt.ylabel('Positive(CNT)', fontsize = 40) # y축 이름
#==================================================#

#================= 2번째 데이터 시각화 =================#
ax2 = ax.twinx()
line2 = ax2.plot(y2, '.-', label = 'negative', color = 'r', linewidth = 3)
for i, v in enumerate(x2):
    plt.text(v, y2[i]+25, y2[i],
             fontsize = 35, 
             color = 'red',
             horizontalalignment ='center',
             verticalalignment = 'bottom',
             rotation = 15)

plt.yticks(fontsize = 35)
plt.ylabel('Negative(CNT)', fontsize = 50)
#==================================================#

plt.title('Review Trend', fontsize = 70) # 그래프 제목 

# 범례 표시
lines = line1 + line2
labels = [line.get_label() for line in lines]
ax.legend(lines, labels, loc = 0,  fontsize = 50)
ax.grid() # 그리드
plt.show()

시각화 결과

x축을 공유하는 그래프 시각화


오늘은 파이썬 twinx을 활용하여 x축을 공유하는 그래프를 동시에 시각화하는 방법을 알아봤습니다.

포스팅 내용에 오류가 있다면 아래에 댓글 남겨주시길 바랍니다.

그럼 오늘도 즐거운 하루 보내시길 바랍니다 :)

고맙습니다😊

728x90
반응형
Comments