[부동산|2|Plotly] 경기도 미분양 아파트 현황 plotly 누적막대그래프
Plotly 누적막대그래프 barplot barmode='stack'
이번에는 plotly에서 누적막대그래프를 그리는 방법을 소개합니다.
matplotlib에서 누적막대그래프를 그리는 방법에 관해서는 아래 링크의 지난 부동산 1번 주제 포스팅에서 다루었던 적이 있습니다.
[부동산 | Phase3] 아파트 현황조사(고양시) - matplotlib 기본 (4부)
plotly와 비교를 위해 matplotlib의 막대그래프 그리는 방법을 요약해 보면 다음과 같습니다.
1) 두 개의 bar()메소드를 사용해 각 값에 대한 막대그래프를 생성하고
2) 얹어 놓을 bar의 height값을 줌과 동시에, bottom 인자에 바닥에 깔릴 bar의 height값을 설정
그렇다면 plotly에서는 어떨까요?
fig.add_trace(go.Bar(x = df2['시군명'], y = df2["총분양가구수"]-df2['당월미분양가구수'], name="전체분양완료가구수"), row=2, col=1)
fig.add_trace(go.Bar(x = df2['시군명'], y = df2['당월미분양가구수'], name="전체당월미분양가구수"), row=2, col=1)
fig.update_layout(showlegend=True, title_text="미분양가구수", barmode='stack')
보시는 바와 같이, fig.update_layout()메소드를 통해 barmode 인자에 'stack'이라는 string값을 주면 그 상태 fig에 add_trace된 Bar 그래프들이 누적 막대 그래프 형태로 자동으로 묶이게 됩니다.
여러분께서 누적막대그래프를 그리신다면 plotly와 matplotlib 중 어떤 방식을 더 선호하실까요?
저는 둘 다 사용해 본 경험상으로 곧바로 plotly방식이 훨씬 간편하다고 느끼게 되었습니다.
만약, 누적해야할 데이터 series가 10개라고 가정해 보겠습니다. matplotlib은 10개의 누적을 위해 매 코딩라인마다 bottom값을 주면서 바닥에 깔릴 값을 앞선 막대들의 누적합 값으로 설정되도록 코딩해 주어야 합니다. 반복문등을 사용해 간결화할수도 있겠지만 어찌되었든 코딩라인이 한번이라도 더 들어가야 합니다.
그런데, plotly에서는 그냥 해당하는 개별 막대그래프에 대한 설정만 하고, add_trace로 추가해 준 후 일거에 barmode = 'stack'이라는 값을 주어 막대그래프 표현을 끝내 버립니다.
하여 막대그래프가 여러개의 요소로 복잡 다단한 양상을 보여주어야 한다면, plotly로 구현하실 것을 권장 드립니다.
이 코딩문의 결과물은 (2,1) subplot의 위치에 놓이게 됩니다. 누적막대그래프의 길이는 각각 '당월미분양가구수'와 '당월누적분양완료가구수'를 표현하게 되며, 이 둘의 총 합은 '총분양가구수'를 표현하게 됩니다.
그럼 결과물 이미지를 보시겠습니다.
hovering data까지 잘 구현된 것이 확인됩니다.
이 외에도 plotly에서 사용 가능한 barmode를 plotly 공식문서 내용을 인용해 보겠습니다.
barmode
Parent:layout
Type: enumerated , one of ("stack"
|"group"
|"overlay"
|"relative"
)
Default:"group"
Determines how bars at the same location coordinate are displayed on the graph. With "stack", the bars are stacked on top of one another With "relative", the bars are stacked on top of one another, with negative values below the axis, positive values above With "group", the bars are plotted next to one another centered around the shared location. With "overlay", the bars are plotted over one another, you might need to an "opacity" to see multiple bars.
요약하면 다음과 같습니다.
1) 'stack'은 한 개 bar 위에 다른 bar가 쌓이도록 하는 방식이고
2) 'relative'는 축을 중심으로 음의 값을 갖는 bar와 양의 값을 갖는 bar를 같은 위치에 쌓는 방식이며,
3) 'group'은 공유된 위치를 중심으로 한 개 bar의 바로 옆에 붙이는 방식이고
4) 'overlay'는 한 개 bar 바로 위에 덮어서 다른 bar를 표현하는 방식입니다. 'overlay'에서는 각 bar 식별을 위해 덮거나 덮어지는 bar의 투명도를 조절할 필요를 언급하고 있습니다.
barmode를 활용하면 다양한 유형의 barplot을 구현할 수 있겠습니다.
다음 포스팅에서는 3D plot 구현법을 살펴 보도록 하겠습니다.
'파이썬(Python) > 경기도 미분양 아파트 현황 Plotly subplots' 카테고리의 다른 글
경기도 미분양 아파트 현황 (0) | 2020.07.30 |
---|---|
[부동산|2|Plotly] 경기도 미분양 아파트 현황 3D plot go.Scatter3d (0) | 2020.07.25 |
[부동산|2|Plotly] 경기도 미분양 아파트 현황 go.Table() Plotly 표 만들기 (0) | 2020.07.23 |
[부동산|2|Plotly] 경기도 미분양 아파트 현황 make_subplots() (0) | 2020.07.22 |
[부동산|2|Plotly] 경기도 미분양 아파트 현황 XML parsing (0) | 2020.07.21 |