정말 오랜만에 NCL 포스팅입니다
저희 교수님이 자주 쓰시는 툴이라 저도 알아두면 좋을거 같아서 다시 공부해보려고 합니다
기본적인 막대그래프에 리소스를 추가해보겠습니다
먼저 기본적인 xy 구성의 막대 그래프 코드입니다
x = (/1, 2, 3, 4, 5/)
y = (/2, 4, 6, 8, 10/)
w = gsn_open_wks("x11", "blog1")
res = True
res@gsnXYBarChart = True
p = gsn_csm_xy(w, x, y, res)
x 윈도우 형대로 여는 방식을 사용했습니다
실행하면 바로 열려서 좋더라구요
저 코드를 실행하면
이런 그림이 나옵니다
하지만 뭐가 이상하지 않나요?
이건 파이썬으로 그림 그림입니다
ncl 그림은 파이썬 그림과 다르게 맨 앞에 x =1, y = 2일 때 막대가 아예 없죠??
파이썬은 그래프를 그릴 때 자동으로 y축의 시작을 0부터 그리지만
ncl은 따로 리소스를 추가하지 않으면 y값들 중 가장 작은 값으로 설정이 되기 때문에
첫번째 막대가 그림에서 안보이는 겁니다
이걸 해결하려면
Reference Line, 즉 기준선을 설정해줘야합니다
x 기준선은 따로 설정하지 않아도 되기 때문에 y축 기준선만 그려주면 됩니다
위에 코드에서 resource를 True로 바꾼 부분이 있기 때문에 바로 reference line 코드로 가겠습니다
한 파일 내에서 추가되는 모든 리소스들은
res = True
:
:
:
p = gsn_csm_xy(w, x, y, res)
resource를 킨 부분부터 직접 그래프를 그리는 gsn_csm_xy 사이에 추가해주면 됩니다
만약 gsn_csm_xy 뒤에 리소스를 추가하면?
그래프가 그려질 때 반영이 안되겠죠??
저 부분에다
res@gsnYRefLine = 0
이렇게 추가해주면 됩니다
추가한 후 다시 그림을 그리면
첫 번째 막대가 생겨난 걸 볼 수 있습니다
다음은 색깔을 추가해보겠습니다
res@gsnXYBarChartColors = (/"red", "orange", "yellow", "green", "blue"/)
코드는 정말 간단합니다
NCL도 파이썬처럼 코드가 직관적이라 보고 쓰기 편합니다
XYBarChart에서 Colors를 지정한다 라는 뜻입니다
위의 색상으로 그림을 그리면
이렇게 쨍한 색깔로 그려집니다
근데 모든 색깔들의 영어 이름을 알 수도 없고 약간 파스텔 톤 색깔도 사용하고 싶을수도 있을거 같아요
코드처럼 색상 이름으로도 지정을 할 수 있지만
w = gsn_open_wks("x11", "blog1")
gsn_define_colormap(w, "amwg256")
res@gsnXYBarChartColors = (/20, 80, 140, 200, 230/)
내가 사용할 컬러맵을 지정하고
컬러맵에 지정되어 있는 색상 번호를 가지고도 가능합니다
제가 예시로 든 amwg256을 살펴보면
사진은 ncar 공식 홈페이지에서 가져왔습니다
https://www.ncl.ucar.edu/Document/Graphics/ColorTables/amwg256.shtml
사진처럼 각 색상마다 정해진 번호가 있습니다
저렇게 번호로 색상을 지정해서 불러오면
이렇게 그려집니다
컬러맵도 굉장히 다양하게 있으니 아래 링크에서 둘러보시면 될 거 같습니다
https://www.ncl.ucar.edu/Document/Graphics/color_table_gallery.shtml
이렇게 하면 꼭 색깔의 영어 이름을 알지 않아도 사용이 가능하고
또 같은 노란색이어도 더 많은 노란색들을 사용할 수 있어서 더 좋습니다
이렇게 기본적인 그래프를 그려보고 색깔도 입혀봤습니다
다음 포스팅은 텍스트를 추가하거나 제목, 축 이름들도 넣어보겠습니다
긴 글 읽어주셔서 감사합니다!
'NCL' 카테고리의 다른 글
작업5: NCL로 netCDF 파일 시각화하기1 (4) | 2023.05.01 |
---|---|
작업4: NCL로 막대그래프 그려보기3 (0) | 2023.01.06 |
작업3: NCL로 막대그래프 그려보기2 (0) | 2023.01.02 |
작업 1: NCL로 플랭크 곡선 그려보기 (0) | 2022.11.01 |
NCL 기초 (0) | 2022.11.01 |