파이썬(Python)/골프용품 수출입

[무역|6|Plotly] 골프용품 수출입 - go.Scatter() line plot 그리기

JJ Goh[Certified customs broker] 2020. 7. 7. 13:26

[무역|6|Plotly] 골프용품 수출입 - go.Scatter() line plot 그리기

 
 
 벌써 무역 6번 주제까지 왔네요. 너무 무역 주제만 다루나 싶긴 합니다.
 빠른 시일 내에 일반생활 주제를 통한 python skill-up 도구 소개를 계속 이어나갈 수 있도록 노력하겠습니다.
 
 이번에도 계속해서 Plotly에서 제공하는 기본적인 plot 들에 대한 사용법을 알아보고자 합니다. 
 
 통계만 전문으로 하는 부서라던가 대외보고서 작성만 전문으로 하는 부서 또는 전문연구기관 외에는 일반적인 직장에서 자기 분야의 통계 보고서를 작성할 때엔 대부분 bar plot, line plot, pie plot 정도만이 사용되는게 통상입니다. 하여 이 3가지 plot에 대한 customizing이 가능한 수준의 학습만 되어도 당장의 활용이 가능하다고 봅니다. 그 외 추가적인 plot 미화는 사용자가 필요에 따라 더 해나갈 수 있는 부분이 될테구요. 
 
 그런데, plotly는 matplotlib에 비해 문법이 간결하면서도 옵션을 많이 주지 않고도 상당히 고퀄리티로 미화된 그래프를 생성해 줍니다. 아마 이 점이 파이썬을 업무에 바로 활용하고 싶으신 분들 입장에서는 더욱 다가가기 쉬울 것이라 생각되어 plotly 사용법 포스팅을 matplotlib보다 우선하고자 합니다. matplotlib도 포스팅을 늘력나가도록 노력하겠습니다.
 
 
 그럼 주제인 골프용품 수출입실적에 관련한 데이터를 가지고 plotly에 의한 시각화 코드를 살펴 보도록 하겠습니다.
 pandas를 이용한 data trimming 등은 이미 이전 주제들에서 다루었기 때문에, 이번 주제에서는 plotly의 사용법에 대한 부분만 다루도록 하겠습니다.
 
 

 Plotly    go.Scatter()

 

 

 코드를 먼저 보시겠습니다.

fig = make_subplots(rows=1, cols=1)
fig.add_trace(go.Scatter(y=y1, x=z1, name="수출실적", line=dict(dash='longdash', color='blue')))
fig.add_trace(go.Scatter(y=y2, x=z1, name="수입실적", line=dict(dash='dashdot', color='red')))
fig.add_trace(go.Scatter(y=y3, x=z1, name="무역수지", line= dict(dash='solid', shape='spline', color='green',)))


fig.update_layout(template="plotly_white", margin=dict(r=10, t=25, b=40, l=60))
fig.update_xaxes(showgrid=True, gridwidth=1, gridcolor='LightPink')
fig.update_yaxes(showgrid=True, gridwidth=1, gridcolor='LightPink', zeroline=True, zerolinewidth=2, zerolinecolor='grey')

 

 (1) make_subplots()

 

 이 메소드는 subplot을 만들고 싶을 때 사용됩니다. rows인자에 1, cols인자에 1이 들어 갔으므로 현재로서는 1 X 1의 1개의 subplot을 가진 그래프를 그리도록 설정하였습니다. 행으로 2개 열로 4개 .. 도합 8개짜리 subplot을 가진 그래프를 그리고 싶다면 rows 인자에 2, cols 인자에 4의 값을 주시면 되겠습니다.

 

 

 (2) fig.add_trace()

 

 여러개의 plot을 한 개의 그래프안에 넣고 싶을 때엔, add_trace()메소드를 이용해서 n개의 plot을 넣을 수 있습니다. 

 

 

 (3) go.Scatter(y=y1, x=z1, name="수출실적", line=dict(dash='longdash', color='blue'))

 

 plotly.express에서는 line plot을 그리고자 할 때엔, px.line()을 이용합니다. 그리고 scatter plot을 그리고 싶다면 px.scatter()를 이용할 수 있는데요. Plotly 공식 사이트 상의 소개에 따르면, plotly.express를 원치 않을 경우 generic한 방법으로 plotly.graphic_objects(통상, 'go'로 약칭해 import 합니다.)의 go.Scatter()사용을 제시하고 있습니다. 

 plotly.express가 px.line()과 px.scatter()를 분리해 제시한 반면, go에서는 go.Scatter()하나로 scatter plot과 line plot을 모두 그릴 수 있다고 안내하고 있습니다. 

 제가 제시한 코드에서는 go.Scatter()를 사용하였습니다. line plot을 그릴 계획이라 line인자에 dictionary형태로 설정값을 주었는데요. line plot 꾸미기에 밀접한 연관이 되는 인자이기 때문에 이 코드 본문 설명을 간략히 정리하고 곧바로, plotly 공식 문서상의 안내 내용을 추가로 살펴 보도록 하겠습니다.

 

 

 

 

 

 

 

 (4) fig.update_layout(template="plotly_white", margin=dict(r=10, t=25, b=40, l=60))

 

 update_layout()은 tempalte 인자의 설정을 통해 미리 plotly에서 built-in 해놓은 기본 layout 설정 형상을 활용할 수 있습니다. 사용자가 직접 꾸미는 것보다 미리 설정된 값으로 꾸며지기 때문에, 코드가 매우 간략해 집니다. 맘에 드는 template으로 언제든지 값을 변경해 적용해 줄 수 있기 때문에, 그래프의 디자인 능력이 떨어지거나 아니면 세세한 코드를 만지기 귀찮은 분들에게 매우 유용한 옵션이 되겠습니다. 

 margin인자를 통해서는 dictionary로 값을 제공하여 상하좌우의 여백을 얼마나 줄지 조정할 수 있겠습니다.

 이외 유용한 인자들에 무엇이 있겠는지 이 설명문단을 넘어가면 plotly 공식문서에 따라, 설명 드리도록 하겠습니다.

 

 

 (5) fig.update_xaxes(showgrid=True, gridwidth=1, gridcolor='LightPink')

 

 update_xaxes()는 X축을 꾸미는데 사용됩니다. showgrid인자는 X축을 따라 설정되는 세로 tick 눈금선을 설정해 줍니다. True를 주었으니, 그래프에 표시되게 됩니다. gridwidth는 눈금선의 폭을 설정하는데 쓰이고, gridcolor는 눈금선의 색을 설정해 줍니다.

 

 

 (6) fig.update_yaxes(showgrid=True, gridwidth=1, gridcolor='LightPink', zeroline=True, zerolinewidth=2, zerolinecolor='grey')

 

 update_yaxes는 Y축을 꾸미는데 사용됩니다. update_xaxes와 사용 방식은 같습니다.

 추가로 zeroline이라는 인자가 설정되었는데, 이 인자는 Y축 상의 기준선이 되는 '0' line선을 꾸미는데 사용됩니다. 

 zeroline을 'True'로 값을 주었기 때문에, 해당 기준선이 그래프에 표시되게 됩니다.

 

 

 그럼 이 코드에 의한 결과물 중 하나를 보시겠습니다.

 

 

 

 

 다음 포스팅에서는 이 포스팅에서 소개된 메소드들에 사용되는 인자들에 대해 plotly 공식문서상의 내용을 토대로, 안내드리는 시간을 갖도록 하겠습니다.

 

 

 

NPU(엔피유) 관세사무소

대표관세사 고장주

Tel) 031-986-7190

E-mail) sales@npucus.com

[NPU관세사무소 프로모션 페이지] https://www.tradenpu.com/npu_cus/

[무역비지니스 인텔리전스 서비스 | TradeNPU] https://www.tradenpu.com

[파이썬 실용 예제. 무역과 공공데이터] https://pdatinmylife.tistory.com

Certified Customs Broker JangJu Goh

Executive Customs Broker @ NPU Customs Consulting

CEO @ JG TradePlus

sales@npucus.com

Trade Compliance / Customs clearance management at foreign company

Working experience of Air export freight forwarding

Data Visualization / Independent development of business automation application – copyright of JGPO_Manager, JG Data Center, AutoCC and etc.

B2B consignment & direct export/import, B2C Overseas Buying Office consulting

Alibaba.com B2B trade / taobao B2C trade / Amazon.com global selling etc. Online trade regulation consulting.

Import license / Quarantine

English communication available

[TradeNPU for partnership proposal - JGTP] https://www.tradenpu.com/jgtp/

 

반응형