[Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 2: 왼쪽에 y축 여러 개 그리기
·
대기과학/프로그래밍
- 개요저번 포스트에서는 오른쪽 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.pypl..
[Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 1: 오른쪽에 y축 여러 개 그리기
·
대기과학/프로그래밍
- 개요xy 그래프를 그리다보면 y축을 여러 개 그려야 할 일이 있습니다.예를 들어 기상청에서 제공하는 AWS(자동기상관측) 그래프에는 축이 무려 6개나 나옵니다.왼쪽의 y축에는 R(강수량), W(풍향), S(풍속), T(온도)가 있고, 오른쪽의 y축에는 P(기압), H(습도)가 있습니다. 이번 포스트에서는 왼쪽에 y축 1개, 오른쪽에 y축 여러 개 그리는 방법에 대해 알아보겠습니다. 최종적으론 완벽하진 않더라도 아래의 AWS 그래프를 따라그리는 것을 목표로 포스트를 연재하겠습니다. - 오른쪽에 y축을 1개 추가하기오른쪽에 y축을 1개 추가하는 방법은 간단합니다.twinx() 메서드를 사용하고 그냥 plot으로 그래프를 그리면 끝입니다. 저는 API로 다운로드 받은 5분 간격 AWS 자료를 사용했습니다...
[ERA5 재분석 자료] 2. 시간(hourly) 자료를 일(daily) 자료로 변환하고 저장하기
·
대기과학/프로그래밍
- 개요저번 포스트에서는 API로 ERA5 재분석 자료를 다운로드 받는 법을 알아보았습니다.[ERA5 재분석 자료] 1. API를 활용한 다운로드: https://climate-data-science.tistory.com/17 저는 일(daily) 자료로 분석할 일이 있는데 ERA5 재분석 자료는 시간(hourly) 자료입니다.즉 시간 자료를 일 자료로 변환해야합니다. 이번 포스트에서는 시간 자료를 일 자료로 변환하여 nc파일로 저장하는 법을 알아보겠습니다. - ERA5 자료 읽기import osimport netCDF4 as ncimport numpy as np"""읽어야 할 파일 이름 얻기제 경우 INPATH 폴더 내에 모든 파일이 ERA5 자료입니다.본인 상황에 따라 이 부분을 수정해주세요."""I..
[ERA5 재분석 자료] 1. API를 활용한 다운로드 (2024년 10월 수정)
·
대기과학/프로그래밍
최근 ECMWF의 API에 관한 업데이트가 있었습니다.이전에 잘 받아지던 분들은 과거에 쓰던 API key 대신 새로운 API key를 써야합니다.또한 url 도 url: https://cds.climate.copernicus.eu/api/v2가 아닌 url: https://cds.climate.copernicus.eu/api를 써야합니다. - 개요대기과학 분야에서 관측을 제외하면 아마 재분석 자료를 가장 많이 쓸겁니다.재분석 자료를 간단하게 설명하자면 적당한 규칙으로 관측 자료와 모델 자료를 등간격 격자 자료로 합친 것입니다. 관측 자료는 지구 모든 곳에 관측소에 있는 것이 아니기 때문에 관측하지 못하는 공간이 있습니다.반대로 모델 자료에서는 모든 지점의 대기 변수 값을 얻을 수 있지만 관측보다 정확하..
[MetPy] Vertical cross section, 연직단면 그리기
·
대기과학/프로그래밍
- 개요기상 자료의 차원은 시간, 연직층, 위도, 경도로 많아야 4개입니다.특정 시간, 특정 층에서 기상 변수의 수평 분포(위도, 경도)는 matplotlib의 contour, contourf만 잘 쓰면 쉽게 그릴 수 있습니다. 하지만 특정 경로에서 대기 변수의 연직 분포를 알고 싶다면 난이도가 많이 올라갑니다.정공법으로 연직단면을 그리려면 먼저 경로를 정하고, 연직층마다 이 경로의 좌표(위도, 경도)에 맞게 interpolation을 하여 각 층에서 경로의 좌표에 따른 변수값을 계산해야 합니다. 이런 코드를 짠다니 생각만 해도 머리가 아픕니다.다행히도 MetPy는 특정 경로의 연직단면을 얻을 수 있는 함수를 제공하고 있습니다. - 자료 읽기이번에는 NCEP2 재분석 자료의 30년 평균 월평균 온도를 사..
[MetPy] 단열선도 그리기
·
대기과학/프로그래밍
- 개요전 대기과학 분야의 그림 중에 단열선도가 직접 그리기 가장 어렵다고 생각합니다.파이썬을 쓰기 전에도 물론 직접 그리진 않고, NCL에서 제공하는 단열선도로 그림을 그렸죠.파이썬을 쓰는 지금은 MetPy 라이브러리로 단열선도를 그리면 됩니다.  이번 포스트에서는 MetPy 라이브러리의 parcel_profile_with_lcl_as_dataset 함수를 이용해서 단열선도를 그려보겠습니다.아래의 예제 코드를 참고했으며, 저는 온도, 이슬점과 관련된 변수만 그릴 것입니다.단열선도 오른 편에 풍향, 풍속도 나타낼 수 있습니다.https://unidata.github.io/MetPy/latest/examples/plots/Sounding_LCL_Dataset.html#sphx-glr-examples-plo..
[MetPy] 튜토리얼: 알아보고 설치해보자
·
대기과학/프로그래밍
MetPy의 홈페이지인 https://unidata.github.io/MetPy/latest/index.html에 있는 다양한 글을 정리해보았습니다.- MetPy란?MetPy는 파이썬에서 사용 가능한 오픈 라이브러리로 기상 자료를 읽고, 시각화하고, 계산하는 다양한 기능을 제공합니다.National Science Foundaion(NSF)과 Unidata가 MetPy 개발을 지원했다고 합니다. 미국 정부의 과제를 담당하는 기구인 NSF에서 경제적 지원을 받았고,University Corporation의 산하 조직인 Unidata에서 실제 개발 업무를 맡았습니다.좀 더 찾아보니 파이썬 netCDF4 라이브러리 개발도 Unidata에서 진행하는 프로젝트이며,대기과학과 파이썬에 관한 여러 프로젝트를 하고 있어..
지도에 바람 벡터 그리기
·
대기과학/프로그래밍
- 개요대기과학을 하다보면 주로 속도, 온도, 습도와 같은 변수를 다룹니다.속도는 운동방정식, 온도는 열역학방정식, 습도(혹은 비습)는 강수 때문에(습윤 대기로 가정하면 지배방정식에 들어가지만 대학원 수준에서도 웬만해선 건조 대기로 배움) 이런 변수들을 분석하게 되죠. 이런 변수를 지도에 시각화하려면?온도, 습도와 같은 변수는 선(contour)이나 음영(shading)을 사용합니다.하지만 속도의 경우, x방향, y방향 중 한 방향의 속도(속력)은 선과 음영으로 시각화 가능하지만보통은 x, y방향의 속도를 벡터로 표현해 풍속과 풍향이 한 눈에 보이도록 시각화합니다. 시각화할 때 구글에서 남이 짠 코드를 찾아서 복사, 붙여넣기하는 것이 정석인데선과 음영을 그린 코드는 많지만 바람 벡터에 대한 코드는 적고,..
[기상청 API][ASOS 시간(hourly) 자료 다운로드] 2. 장기간 자료 다운로드 받기
·
대기과학/프로그래밍
- 개요저번 포스트에서는 기상청 API 허브에서 제공하는 기본 URL로 ASOS 시간 자료를 다운로드 했습니다.그냥 기본 URL의 변수인 tm1(시작기간), tm2(종료기간)을 설정해서 ASOS 시간 자료를 다운로드 받아보면ASOS 시간 자료는 최대 30일까지 받을 수 있다는 문제가 있습니다.31일까지면 좋을텐데 30일이 최대입니다. ㅠㅠ 그러므로 장기간의 ASOS 시간 자료를 다운로드 받으려면 파이썬 코드로 한 번에 다운 받는 자료의 길이를 30일 이내로 여러 번 API를 요청해야 합니다. 이번 포스트에서는  # 1. 다운 받을 길이를 설정하고 이를 30일 이내의 기간으로 끊어서 tm1과 tm2을 설정하는 부분# 2. 위의 함수를 기반으로 API를 여러 번 요청해서 하나의 파일로 저장하는 부분이렇게 두..