[Matplotlib] 기후 나선 그리기 0: 프롤로그
·
대기과학/프로그래밍
안녕하세요.2024년은 8월, 9월이 정말 덥습니다.기후가 변하고 있기 때문일까요? 제 최근 포스트에서 최근 서울이 얼마나 더운지 알아보긴 했습니다.여름 온도, 습도의 변화 시각화 https://climate-data-science.tistory.com/3047108 서울 관측소 시각화 https://climate-data-science.tistory.com/31 위의 두 가지 시각화 방법도 기후변화의 모습을 잘 보여주지만평소에 저는 어떤 다른 방법을 기후변화를 시각화 하는 것이 좋은지 고민하곤 합니다. 알고리즘 때문인지 유투브 추천 영상에 'NASA Climate Change'의 영상이 추천되더군요.NASA Climate Change는 다양한 시각화 방법으로 기후변화를 보여줍니다.그래서 저도 여기 나온..
47108 서울 ASOS 월평균 기온으로 본 지구온난화
·
프로그래밍/시각화
47108 서울 ASOS는 1907년부터 지금까지 기상 요소를 관측하고 있습니다.무려 100년이 넘게 관측이 되어 100년 동안 정말 지구온난화가 있었는지 확인 가능하겠죠?다만 슬프게도 한국전쟁기간인 1950년부터 1953년까지 결측이 있긴하지만요. 기준 온도를 정의하자.지구온난화를 시각화할 때는 기준 온도를 먼저 정의해야 합니다.어떤 기간보다 지금이 얼마나 뜨거운지 알아야 하거든요. 보통은 이산화탄소 배출이 심해지기 전(산업혁명 전)인 1850년부터의 관측값을 써야하지만 저는 1908년부터 1949년을 기준온도로 쓰겠습니다.1월부터 12월까지 각각의 기준온도를 계산해서 각 월에서 빼줍니다. 예를 들어 아래에 제가 시각화 하는 2024년 7월 평균 기온은 그냥 2024년 7월 평균 기온이 아니라 1908..
2024년 여름 얼마나 더운거지?
·
프로그래밍/시각화
요즘 날씨에 대해 남들에게 물어보면 진짜 너무 덥고 습하다는 말을 자주 듣습니다. 과거와 비교해서 지금은 얼마나 덥고 습한걸까요? 서울(47018) ASOS 관측소의 평균기온, 평균습도 자료를 이용해서6, 7, 8월 상순, 중순, 하순 평균값으로 순위를 매겨봅시다. 1908년부터 2024년 8월 중순까지 시간순서대로 평균습도, 평균기온을 시각화하는 동영상을 만들었습니다." data-ke-type="html">HTML 삽입미리보기할 수 없는 소스  그럼 순위를 표로 살펴보죠(동영상의 마지막 프레임입니다). 평균기온 6위를 보시면 2024년 8월 중순이 있습니다.2024년 8월 상순은 5위에 있네요.또한 평균기온 상위권 중에서 습도도 좀 높은 편이긴합니다.참고로 제가 따로 확인해보니 2024년 6, 7월은 ..
여러 nc 파일을 빠르게 읽으려면?
·
프로그래밍/파이썬
- 개요nc파일은 NetCDF(Network Common Data Form) 파일로 대기과학 분야에서 많이 사용하는 파일 형식입니다.특히 위도, 경도, 연직층의 좌표계를 갖는 자료는 보통 nc 파일로 저장되어 있습니다. 예전에 저는 ERA5 재분석 자료 1달치를 하나의 nc파일로 저장했었는데요.이 nc 파일에는 특정 변수가 [30일 x 24시간 x 위도격자 x 경도격자 x 연직층]의 차원으로 저장되므로 용량이 꽤 큽니다.물론 좁은 영익인 한반도 근처 자료만 받았지만 30년치라 그냥 이 자료를 모두 읽는 것만 해도 시간이 꽤 걸립니다. 그럼 읽는 속도를 비교하며 nc 파일을 가장 빨리 읽는 방법을 알아보겠습니다.결론을 먼저 말하자면 xarray에서 병렬처리로 파일을 읽는 것이 제일 빠릅니다. - 사용할 라..
[Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 9: 그리드 라인 그리기, 배경색 변경
·
대기과학/프로그래밍
- 개요방금 전에 8번째 포스트를 마쳤는데 어째다보니 작업이 금방 끝나서기상청 ASOS/AWS 그래프 따라 그리기의 마지막 포스트를 연재합니다. 오늘은 그리드 라인을 그리고, 배경색을 회색으로 변경하겠습니다. - 그리드 라인 그리기 및 회색 배경원본에서 그리드 라인이 어떻게 그려졌는지 확인해봅시다.아래의 원본을 보시면 세로 선은 3시간 간격으로 그려져 있고 00시는 검정색, 나머지 시간에서는 회색입니다.가로 선은 ytick라벨이 적힌 곳에 그려져 있습니다.모두 회색이며 중간에 위치하는 선만 실선 나머지는 dashed line입니다.마지막으로 원본의 배경색은 회색입니다. matplotlib에서는 gridline을 그리는 옵션이 따로 있긴 하지만저는 ax.axvline과 axhline을 사용하겠습니다ax.a..
[Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 8: 바람 벡터 넣기
·
대기과학/프로그래밍
- 개요이제 슬슬 이번 연재의 끝이 보이네요.오늘은 x축 아래에 있는 바람 벡터를 그려보겠습니다. 그림 내부가 아니라 그림의 밖인 x축 아래에 화살표를 그려야하기 때문에 좌표 설정이 어려웠습니다...저도 좌표 변환을 하는 방법을 찾아보느라 시간이 걸렸네요. - matplotlib의 좌표계화살표를 그리기 전에 좌표에 대해 공부해봅시다.그림은 2차원이기 때문에 기본적으로 (x, y)의 2차원 좌표입니다.1. 데이터 좌표계우리가 ax.plot이나 ax.scatter로 그림을 그릴 때 입력하는 데이터의 숫자가 x, y 좌표입니다.예를 들어 ax.plot을 이용해 (-1,-1)부터 (1,1)까지 선을 긋는다면자동으로 x축, y축 범위가 -1~1까지 설정되고 선이 하나 그어질 것입니다. 다음에 ax.scatter로..
[Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 7: x축 라벨 적기
·
대기과학/프로그래밍
- 개요저번에는 y축에 대한 포스트였고, 이번에는 x축에 대한 포스트입니다.아래의 빨간 영역의 x축 라벨과 비슷하게 만들어봅시다.  코드에 대해 알아보기 전에 무슨 작업을 해야하는지 고민합시다. 1. x축 라벨이 위에 있다.matplotlib의 x축 라벨 기본 위치는 아래이므로 수정해야 합니다.(사실 xticklabels 메서드를 사용 안할거라 그냥 x축 라벨 옵션을 꺼주기만 해도 되긴 함)2. x축 tick이 없다.이건 저번 y축 tick을 없애는 메서드를 그대로 적용하면 되겠죠.3. x축 라벨은 3시간 간격주의해야하는 점으로 00H는 글씨가 굵습니다.4. 그래프의 왼쪽, 오른쪽 y축 위에는 x축 라벨을 적지 않는다.아무래도 y축 라벨인 T, P와 겹치기 때문에 x축 라벨이 없는 것 같죠.5. 00H ..
[Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 6: y축 제목, 단위 적기
·
대기과학/프로그래밍
- 개요저번 포스트에서는 변수 하나씩 그래프로 그렸던 작업을 for문으로 바꾸어 코드를 짧게 만들어 보았습니다.이렇게 for문으로 바꾸면 함수화하기 쉬워지므로 유지/보수 및 자동화가 쉬워집니다. 이번에는 y축 제목 및 단위를 적어보겠습니다. 지금까지 포스트 중에서 가장 간단한 일이 될 듯합니다. -  annotate() 메서드 사용전 annotate()를 써서 y축 제목과 단위를 적겠습니다.참고로 text() 메서드를 써도 무방합니다. annotate()와 text()의 주요 차이점은 좌표계 설정 방법이고, 제 생각에 annotate가 더 다루기 쉽습니다.annotate는 xycoords 키워드를 통해 좌표계를 설정하고, text는 transform 키워드로 좌표설정을 합니다. annotate 사용 예시..
[Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 5: 반복하는 부분을 for문으로 만들기
·
대기과학/프로그래밍
- 개요하나의 axes에 그림을 여러 개 그리면 같은 코드를 여러 번 반복할 수밖에 없습니다.저는 6개의 변수를 그리기 때문에 6번의 비슷한 코드가 반복되죠.이런 부분은 for문으로 만들어야 관리 및 함수화하기 쉽습니다. 만약 for문으로 만들지 않는다면?실수를 1번 했을 때 수정을 6번 해야합니다. (같은 코드가 6번 반복되니까)또한, 나중에 코드를 재활용할 때도 수정을 6번 해야합니다.그리고 보통 몇 주, 몇 개월 후에 코드를 재활용하는 경우가 많습니다.오랜만에 코드를 다시보면 이 코드가 어떤 순서로 동작하는지 기억도 잘 안나는데코드는 엄청 길기 때문에 어디를 수정해야되는지도 알기 어려워 혼란스러울겁니다. 그리고 기상청 ASOS/AWS 따라그리기에 대한 포스트를 더 연재할 것이라 코드를 for문으로 ..