파이썬(Python)/경기도 미분양 아파트 현황 Plotly subplots

[부동산|2|Plotly] 경기도 미분양 아파트 현황 go.Table() Plotly 표 만들기

JJ Goh[Certified customs broker] 2020. 7. 23. 07:08

[부동산|2|Plotly] 경기도 미분양 아파트 현황  go.Table() Plotly 표 만들기



 Plotly 표 만들기  go.Table()



 지난 포스팅에서 몇차례 언급드렸던 go는 graph_objects의 약어입니다. Plotly의 모듈로서 'go'로 약칭해 import하는 것이 통상입니다.

import plotly.graph_objects as go


 이 go 모듈 안에 Table() 메소드를 활용해서 시각화도구로서 그래프만 그리는 것이 아닌 표도 그려 넣을 수 있도록 해보겠습니다. 특히, 이 표는 html로 구현되면서 interactive한 반응형의 표를 만들 수 있다는 점에서도 특별함을 제공해 줍니다.


Plotly를 이용한 테이블의 생성에 관한 공식문서는 아래의 링크를 통해 확인이 가능하십니다.


Tables in Python



 우리 예제의 시각화를 위해 작성된 아래 코드를 먼저 보시겠습니다.

fig.add_trace(
go.Table(
header=dict(
values=["시군명", "관할군구명", "관할읍면동명", "시공소재지위치","시공사정보",
"시행사정보", "민간공공구분", "임대분양구분", "면적", "총분양가구수", "당월미분양가구수",
"분양청약일자", "입주예정일자", "준공여부", "비고"],
font=dict(size=10),
align="center"
),
cells=dict(
values=[df[k].tolist() for k in df.columns[0:]],
align = "right")
),
row=1, col=1)


 테이블을 작성하기 위해서 go.Table()메소드를 사용하는데요.


 각 parameter의 용법은 다음과 같습니다.


 1) header : values에 각 열의 name을 설정해 줍니다. font는 글자에 관한 설정을 변경해 줍니다. align은 글자의 정렬방향으로서 center로 주었기 때문에, 글자가 중앙으로 정렬됩니다.


 2) cells : values에 각 cell에 들어갈 값을 지정해 줍니다. 이 예제에서는 반복문을 통해 각 cell에 대입될 값들을 df로부터 읽어 들이도록 설정되어 있습니다. 반복문에서는 k라는 값이 df라는 DataFrame의 columns를 0번 열부터 인식할 수 있는 최종지점까지 반복하도록 하였습니다. 18개 열이 있다면 k는 0부터 17까지 반복해서 값이 반영되어 들어갑니다. 그리고, df[k].tolist()를 통해, 읽어들인 df의 열의 값들을 list로서 values에 추가해 주게 됩니다. 

 align은 글자의 정렬방향으로 right로 주었기 때문에, 글자가 우측으로 정렬됩니다.



 header와 cells의 설정을 통해 이제 테이블의 모양을 갖추게 되었습니다. 


 이 테이블은 subplots 중 (1,1)의 위치에 배치될 수 있도록, fig.add_trace()의 parameter로서 row = 1, col = 1로 위치 설정을 하였습니다.


 그리고 지난 포스팅에서 make_subplots의 specs 인자를 설정할 때 이미 설명하였지만, 다시 한번 코드를 보도록 하겠습니다.


specs=[[{"type": "table", "colspan":2},None],
[{"type": "bar"}, {"type": "scene"}],
[{"type": "bar"}, {"type": "scene"}]
])


 이 (1,1) subplot은 수평방향으로 2칸을 차지하도록 그 명세값을 주었기 때문에 row =1 , col = 1의 값을 주었지만, 실질 수평으로 2칸 모두를 차지하며, 첫번째 행에는 이 table만이 그려지게 됩니다.


 그럼 이제 이 코드블록을 통해 표출된 테이블 결과물을 보겠습니다.


 


 이미지를 클릭하시어 확대해서 보시면 잘 표시된 것이 확인됩니다. 그리고 맨 우측 스크롤바가 표출된 것이 보이실 겁니다. 이 스크롤바 knob을 잡고 드래그를 하시면 이 테이블의 모든 값들이 규정된 높이값을 갖고 있는 이 table내에서 전부 확인될 수 있습니다. 이러한 interactive한 기능을 plotly go.Table()을 통해 추가적인 코딩 없이 구현이 가능합니다. 따라서, 보고서 작성상 테이블 사용이 잦은 경우에는 Plotly의 사용이 매우 유용할 수 있겠습니다.


 이외에도 공식문서상으로 table의 행, 열 또는 교차행에 색을 채워넣는 방법이라던가 cell값을 읽어 그 채우기 색을 변경하는 방법에 관한 예제 코드들도 소개되어 있습니다. 비교적 간단한 내용들이니 한번씩 찾아보시기를 권장 드립니다. 



 이제 다음 포스팅에서는 Plotly 막대그래프 및 누적막대 그래프 그리는 법을 살펴 보겠습니다. 

반응형