파이썬(Python)/향수 수출입 Plotly Pie Chart

[무역|8|Plotly] 향수 수출입 - Pie Chart 라벨표시, Donut chart로 변환, 특정섹터 띄우기

JJ Goh[Certified customs broker] 2020. 7. 15. 06:00

[무역|8|Plotly] 향수 수출입 - Pie Chart 라벨표시, Donut chart로 변환, 특정섹터 띄우기

 

지난 포스팅에 이어 pie chart의 다양한 표현 옵션들을 살펴 보겠습니다.

 
 

plotly.express   pie chart 라벨 표시하기 

 

 

이번에는 시인성을 높이기 위해 범례가 아닌 차트상에 국가코드를 표기해 보도록 하겠습니다.

 

d8 = d7.loc[d7['impDlr']>100,:]
fig = px.pie(d8, values='impDlr', names='statCd', title='국가별 수입금액',
             color_discrete_sequence=px.colors.sequential.RdBu)
fig.update_traces(textposition='inside', textinfo='percent+label')

 

 마지막 라인에 추가되어진 fig.update_traces()로 라벨을 표시하게 됩니다. textpostion을 inside로 하였고, textinfo는 percent+label로 하였기 때문에, 해당 값은 표의 내부에 국가명과 percentage가 표출되게 됩니다. 

결과물은 아래와 같습니다.

 

 

 

 

 

 

plotly.express   pie chart 크기 조정

 

 

 이번에는 pie chart의 크기를 조정해 보겠습니다.

 

d8 = d7.loc[d7['impDlr']>100,:]
fig = px.pie(d8, values='impDlr', names='statCd', title='국가별 수입금액',
             color_discrete_sequence=px.colors.sequential.RdBu, width=800, height=800)
fig.update_traces(textposition='inside', textinfo='percent+label')
plotly.offline.plot(fig)

 

px.pie()의 parameter로 width와 height값을 주면 가로와 세로폭이 조정됩니다.

 

 

 

 가로, 세로폭을 동일하게 800으로 줄이고 스크린샷을 떠봤습니다. 크기가 줄어든 만큼 동일한 업로드공간에 더 꽉차게 이미지가 떠서 시인성이 더욱 좋아진 것이 확인됩니다.

 

 

 

 

 

 

plotly.express   pie chart를 Donut chart로 바꾸기

 
 
 이번에는 가운데 구멍이 뚫린 Donut chart를 만들어 보겠습니다. px에 별도의 메소드가 있는 것은 아니고, px.pie()의 parameter로서 hole이라는 값을 세팅해 주면 해당값만큼 가운데에 구멍을 뚫어 줍니다. 
 
d8 = d7.loc[d7['impDlr']>100,:]
fig = px.pie(d8, values='impDlr', names='statCd', title='국가별 수입금액',
             color_discrete_sequence=px.colors.sequential.RdBu, width=800, height=800, hole=0.8)
fig.update_traces(textposition='inside', textinfo='percent+label')
plotly.offline.plot(fig)

 

 hole값으로 저는 0.8을 주었습니다.

 이 값을 픽셀단위로 오해하셔서 1 이상의 값을 주시면 안됩니다. 

 이 값은 구멍의 외곽대비 비율로 이해하시면 되겠습니다. 

 따라서, 지름이 외곽원형의 지름 대비 80% 수준의 구멍을 뚫게 됩니다.

 

 

 

 

 

 

 애석하게도 plotly.express의 px.pie()에는 pull인자가 없습니다. pull인자는 특정 섹터를 pie chart또는 donut chart와 분리하여 떠서 나오게 하는 효과인데요. 공식문서상으로도 px.pie로는 구현이 안됩니다. 이런 효과를 원하신다면 plotly의 graphic_objects(as 'go')로 구현하는 방법이 나옵니다. 계속해서 같은 값을 가지고 plotly의 go로 해당 방법을 살펴 보겠습니다.

 

 

plotly.graphic_objects   pie chart or Donut chart의 특정 섹터 띄우기

 

 


d8 = d7.loc[d7['impDlr']>100,:]
fig = go.Figure(data=[go.Pie(labels=d8['statCd'], values=d8['impDlr'], pull=[0,0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9],
                             title='국가별 수입금액', textposition='inside', textinfo='percent+label', hole=0.8)])
plotly.offline.plot(fig)

 

 

 px가 아닌 go를 사용하기 때문에 코드라인이 전체적으로 바뀌었습니다. 하지만, go의 장점은 customizing이 px에 비해 더 자유롭다는 것입니다. px는 간편성을 go는 높은 자유도라는 특징으로 설명할 수 있겠습니다.

 

 

 최대한 px로 그렸던 마지막 형태에서 표현을 극대화하기 위해 pull이라는 인자를 사용해 극대화를 하면서 띄우는 수준을 단계형태로 가져가 보았습니다. 안내문에 따르면 pull인자값을 주실 때엔 tuple이나 dictionary 및 list의 형태로도 값을 줄 수 있습니다. dictionary형태로 주면 특정 라벨값에 대한 값을 콕 집어 설정 변경할 수 있기 때문에 표현항목수가 많지 않다면 dictionary로 설정하시는게 정확한 설정에 좋겠습니다.

 

 

 

 

 

 이 외에도 Sunburst chart나 Subplots 만드는 방법 등이 공식문서상 소개 되어 있으나, 이번에 준비한 주제로 이 내용을 표현하기에는 DataFrame이 적정하지 않아 다른 주제를 통해 포스팅하도록 하겠습니다.

 

 부족한 글 읽어 주셔서 감사합니다.

 

 오늘도 즐거운 하루 되세요!

 

 

 

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/

반응형