NCL

작업2: NCL로 막대그래프 그려보기1

이석사 중 2023. 1. 1. 20:46
728x90

정말 오랜만에 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

 

amwg256 color table

 

www.ncl.ucar.edu

 

사진처럼 각 색상마다 정해진 번호가 있습니다

 

저렇게 번호로 색상을 지정해서 불러오면

 

이렇게 그려집니다

 

컬러맵도 굉장히 다양하게 있으니 아래 링크에서 둘러보시면 될 거 같습니다

https://www.ncl.ucar.edu/Document/Graphics/color_table_gallery.shtml

 

NCL Graphics: Color Table Gallery

 

www.ncl.ucar.edu

이렇게 하면 꼭 색깔의 영어 이름을 알지 않아도 사용이 가능하고

 

또 같은 노란색이어도 더 많은 노란색들을 사용할 수 있어서 더 좋습니다

 

이렇게 기본적인 그래프를 그려보고 색깔도 입혀봤습니다

 

다음 포스팅은 텍스트를 추가하거나 제목, 축 이름들도 넣어보겠습니다

 

긴 글 읽어주셔서 감사합니다!

 

728x90