[부동산|2|Plotly] 경기도 미분양 아파트 현황 make_subplots()
Plotly Subplots만들기 make_subplots()
from plotly.subplots import make_subplots
fig = make_subplots(
rows=3, cols=2,
shared_xaxes=True,
vertical_spacing=0.03,
specs=[[{"type": "table", "colspan":2},None],
[{"type": "bar"}, {"type": "scene"}],
[{"type": "bar"}, {"type": "scene"}]
])
fig라는 변수에 make_subplots()함수를 대입해 사용하게 되는데요.
각 요소 인자는 다음과 같은 의미로 사용됩니다.
1) rows : subplots를 행으로 몇개 생성할지를 결정합니다.
2) cols : subplots를 열로 몇개 생성할지를 결정합니다. rows와 cols의 곱한 값만큼의 subplots가 한 개의 canvas안에 그려지게 됩니다. 예를 들어, rows =3, cols=2 이면 3 X 2. 즉, 6개의 subplots를 그리도록 canvas가 구성됩니다.
3) shared_xaxes : subplots간에 X축을 공유해서 사용할지를 결정합니다. True로 주었기 때문에 X축은 공유가 되게 되는데요. X축이 공유된다면 열 방향으로 존재하는 subplots간에는 X축이 같은 값의 범위를 갖게 되기 때문에, chart의 비교가 필요한 경우 또는 X축을 굳이 각 그래프 별로 개별적으로 표현할 필요가 없는 경우 사용하기 알맞습니다.
아래 결과물 예시 이미지를 보시면 X축이 공유되어 첫 행의 subplot에는 X 축 값이 별도로 표시되지 않는 것이 확인됩니다.
4) vertical_spacing ==> 수직 방향으로 subplot간 간격을 얼마나 벌릴지를 결정합니다.
5) specs ==> 각 subplot별 속성을 dictionary형태로 지정해 줍니다. 특히, make_subplots에서 각 subplot의 type 값을 지정해 주는 것은 중요한 요소입니다. 모두 동일한 형태의 기본 그래프를 쓰지 않을 것이라면 type값을 설정해 줌으로서, 원하는 형태의 그래프를 그리도록 해줍니다.
아래 subplots의 types에 관한 plotly 공식 사이트 내용을 인용해 보겠습니다.
By default, the
make_subplots
function assumes that the traces that will be added to all subplots are 2-dimensional cartesian traces (e.g.scatter
,bar
,histogram
,violin
, etc.). Traces with other subplot types (e.g.scatterpolar
,scattergeo
,parcoords
, etc.) are supporteed by specifying thetype
subplot option in thespecs
argument tomake_subplots
.Here are the possible values for the
type
option:
"xy"
: 2D Cartesian subplot type for scatter, bar, etc. This is the default if notype
is specified."scene"
: 3D Cartesian subplot for scatter3d, cone, etc."polar"
: Polar subplot for scatterpolar, barpolar, etc."ternary"
: Ternary subplot for scatterternary."mapbox"
: Mapbox subplot for scattermapbox."domain"
: Subplot type for traces that are individually positioned. pie, parcoords, parcats, etc.- trace type: A trace type name (e.g.
"bar"
,"scattergeo"
,"carpet"
,"mesh"
, etc.) which will be used to determine the appropriate subplot type for that trace.
요약하면, 추가되는 subplot들은 기본적으로 2차원 직교좌표계(2-dimensional cartesian)로만 가정한다는 것입니다. 따라서, 3차원 그래프나 직교좌표계를 쓰지 않는 scatter polar, mapbox, pie chart 등의 다른 형태의 그래프를 그리고자 한다면, 그 type을 반드시 지정해 달라는 의미입니다.
xy, scene, polar, ternary, mapbox, domain 과 같은 것들이 있고, make_subplots()의 인자로서 dictionary형태로 값을 주면 그에 상응한 그래프를 그리게 되고, 그 값과 사용된 메소드명이 다르면 에러가 발생됩니다.
Plotly Subplots만들기 make_subplots(specs) 설정 이해하기
specs=[[{"type": "table", "colspan":2},None],
[{"type": "bar"}, {"type": "scene"}],
[{"type": "bar"}, {"type": "scene"}]
])
리스트안에 dictionary형태로 2개를 묶어 하나의 리스트를 만들고 다시 그러한 리스트 묶음 3개로 하나의 리스트를 구성해 specs값을 제공하였습니다. 이 설정과 관련해서는 앞선, rows와 cols값을 설정한 값과 밀접한 연관이 있습니다.
이 예제에서는 rows = 3, cols = 2의 값을 주었는데요. 즉, 수직방향으로 3줄, 수평방향으로 2줄의 subplots를 넣을 공간이 생성되도록 했습니다.
이 상태에서 첫번째 리스트는 첫번째 행에 포함된 2개의 subplots에 대한 값을 제공합니다. 두번째 리스트는 두번째 행에 포함된 2개의 subplots에 대한 값을 제공하고 세번째 리스트도 같은 논리로 값을 배분합니다. 그리고 그러한 리스트의 묶음으로 specs값을 전달하게 됩니다.
첫번째 리스트의 {"type": "table", "colspan":2}, None}부터 살펴 보면, 이는 table이라고 하는 표형태로 (1,1) 위치의 subplot을 그리겠다는 의미가 됩니다. 그리고 colspan은 수평방향으로 몇 칸을 이 (1,1)위치의 subplot이 차지할지를 결정해 줍니다. 총 2개의 열을 가진 첫번째 행의 (1,1) subplot에 대해 colspan을 2를 주면 이 (1,1) subplot은 2칸을 모두 차지하게 됩니다.
총 2칸 밖에 없는 행에 2칸을 모두 채웠으니, (1,2) subplot은 존재할 수 없습니다. 따라서, 두번째 dictionary는 설정 없이 None으로 값을 줍니다.
두번째 리스트의 {"type": "bar"}, {"type":"scene"}은 (2,1) subplot은 막대그래프를 (2,2) subplot은 'scene' type. 즉, 3차원 그래프를 그리겠다는 설정이 됩니다. 사실, 아파트 미분양 현황 자료 데이터가 3차원 표현에 적합한 데이터는 아니지만 이러한 구현도 가능하다는 설명을 위해 넣은 강제로 넣은 것입니다. 불필요한 면이 있으나, 예제 구현 목적이니 양해를 부탁 드립니다.
세번째 리스트의 {"type": "bar"}, {"type":"scene"}도 (3,1) subplot은 막대그래프를 (3,3) subplot은 3차원 그래프를 그리겠다는 설정이 됩니다.
여기까지 make_subplots()를 알아 보고, 다음 포스팅에서 go.Table에 대해 다뤄 보겠습니다.
'파이썬(Python) > 경기도 미분양 아파트 현황 Plotly subplots' 카테고리의 다른 글
[부동산|2|Plotly] 경기도 미분양 아파트 현황 3D plot go.Scatter3d (0) | 2020.07.25 |
---|---|
[부동산|2|Plotly] 경기도 미분양 아파트 현황 plotly 누적막대그래프 (0) | 2020.07.24 |
[부동산|2|Plotly] 경기도 미분양 아파트 현황 go.Table() Plotly 표 만들기 (0) | 2020.07.23 |
[부동산|2|Plotly] 경기도 미분양 아파트 현황 XML parsing (0) | 2020.07.21 |
[부동산|2|Plotly] 경기도 미분양 아파트 현황 Plotly subplots (0) | 2020.07.20 |