[Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 2: 왼쪽에 y축 여러 개 그리기

2024. 7. 11. 08:33·대기과학/프로그래밍

- 개요

저번 포스트에서는 오른쪽 y축을 여러 개 그렸습니다.

오늘은 왼쪽에 y축을 여러 개 그려보겠습니다.

 

이번 포스트에서는 저번 코드를 활용하여

오른쪽 y축에는 이전과 같이 현지기압, 습도를 그리고

왼쪽 y축에는 에는 10분 평균 풍향, 10분 평균 풍속, 온도를 그리겠습니다.

 

오늘 그릴 것

 

- 오른쪽 y축 여러 개 그리기

저번 포스트에서 spines.right.set_position으로 오른쪽 y축의 위치를 바꾸었고, 이 메서드를 조금만 수정하면 왼쪽 축도 바꿀 수 있습니다.

다만 그 전에 twinx() 메서드로  생성한 액시스는 자동으로 y축, y tick, y label을 오른쪽으로 설정하기 때문에 y축의 tick과 label position도 'left'로 변경해주어야합니다.

 

import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
y_TA = df['TA']
y_PS = df['PS']
y_HM = df['HM']
y_WS = df['WS10']

x = range(len(y_TA))

color_TA = 'red'
color_PS = (255./255., 51./255., 204./255.)
color_HM = (0, 102./255., 153/255.)
color_WS = (50./255., 108./255., 17./255.)
color_WD = (255./255., 153./255., 51./255.)

fig = plt.figure(figsize=(13,5))
# 온도
color = color_TA
ax_TA = fig.add_subplot()
ax_TA.plot(x, y_TA, color=color, lw=1)
ax_TA.set_ylim(10, 30)
ax_TA.set_yticks(range(10, 30+1, 2))

# 현지기압
color = color_PS
ax_PS = ax_TA.twinx()
ax_PS.plot(x, y_PS, color=color, lw=1)
ax_PS.set_ylim(999, 1019)
ax_PS.set_yticks(range(999, 1019+1, 2))

# 습도
color = color_HM
ax_HM = ax_TA.twinx()
ax_HM.plot(x, y_HM, color=color, lw=1)
ax_HM.set_ylim(0, 100)
ax_HM.set_yticks(range(0, 100+1, 10))
ax_HM.spines.right.set_position(('outward', 40))

# 풍속
color = color_WS
ax_WS = ax_TA.twinx()
ax_WS.plot(x, y_WS, color=color, lw=1)
ax_WS.set_ylim(0, 20)
ax_WS.set_yticks(range(0, 20+1, 2))

ax_WS.yaxis.set_ticks_position('left') # y축의 tick 위치를 왼쪽으로 바꿈
ax_WS.yaxis.set_label_position('left') # y축의 label 위치를 왼쪽으로 바꿈
ax_WS.spines.left.set_position(('outward', 30)) # y축 자체의 위치를 왼쪽의 특정 위치로 지정

# 풍향
"""
AWS 풍향 자료의 범위는 0부터 360까지
기상청에서 제공하는 AWS 그래프의 풍향 축을 보면 y=0 위치에 'E'가 적혀있습니다.
동풍은 AWS 풍향 자료에서 90도입니다.
그러므로 0~360인 풍향자료를 90부터 450(360+90)까지의 범위로 바꿔줍시다.
"""
y_WD = df['WD10']
df.loc[df['WD10'] < 90, 'WD10'] += 360
color = color_WD
ax_WD = ax_TA.twinx()
ax_WD.scatter(x, y_WD, color=color, s=4) # 풍향은 scatter plot 사용
ax_WD.set_ylim(90, 90+360)
ax_WD.set_yticks(range(90, 90+360+1, 90))
ax_WD.set_yticklabels(['E', 'S', 'W', 'N', 'E'])
ax_WD.yaxis.set_ticks_position('left')
ax_WD.yaxis.set_label_position('left')
ax_WD.spines.left.set_position(('outward', 60))

 

저번 코드에 풍속, 풍향을 그리는 부분을 추가했습니다.

 

다음 포스트에서는 강수량을 그릴 생각인데요.

저도 처음에 큰 생각 없이 아무 날이나 뽑은거라 하필이면 서울에서 6월 1일~2일까지 강수가 없네요...

 

아무튼 다음 포스트에서는 다른 날을 선정해서 강수도 그려보겠습니다.

'대기과학 > 프로그래밍' 카테고리의 다른 글

[Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 4: y축, 축의 라벨 색 바꾸기  (0) 2024.07.18
[Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 3: 선과 음영 그리기  (1) 2024.07.12
[Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 1: 오른쪽에 y축 여러 개 그리기  (0) 2024.07.10
[ERA5 재분석 자료] 2. 시간(hourly) 자료를 일(daily) 자료로 변환하고 저장하기  (1) 2024.07.01
[ERA5 재분석 자료] 1. API를 활용한 다운로드 (2024년 10월 수정)  (0) 2024.06.21
'대기과학/프로그래밍' 카테고리의 다른 글
  • [Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 4: y축, 축의 라벨 색 바꾸기
  • [Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 3: 선과 음영 그리기
  • [Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 1: 오른쪽에 y축 여러 개 그리기
  • [ERA5 재분석 자료] 2. 시간(hourly) 자료를 일(daily) 자료로 변환하고 저장하기
레까
레까
  • 레까
    데이터 조아
    레까
  • 전체
    오늘
    어제
    • 전체 (86) N
      • 대기과학 (45)
        • 프로그래밍 (42)
        • 개념 (2)
        • 칼럼 (1)
      • 여러가지 데이터 (5)
        • 프로그래밍 & 분석 (5)
      • 프로그래밍 (15)
        • 파이썬 (8)
        • 시각화 (6)
        • 유용 (1)
      • 프로젝트 (17) N
        • 기계학습 기반 서울 기온 예측 (9)
        • 사과게임 매크로 만들기 (4)
        • 버스 한 번으로 특정 지역에 갈 수 있는 지역 찾.. (4) N
      • 데이터리안 SQL 공부 (3) N
      • 주제별 링크 모음 (1)
      • 백업 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
레까
[Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 2: 왼쪽에 y축 여러 개 그리기
상단으로

티스토리툴바