-
[Python] subplot 에 shape 추가하기Programing/Data Science 2020. 4. 3. 07:46
5x1 크기의 subplot을 구성하고 각 subplot 에 shape를 추가하는 방법에 대해 정리하였습니다.
shape를 추가하기 위해서는 아래 함수들을 사용하면 됩니다. 다만, 모든 subplot에 동일한 또는 특정 shape를 추가하려면 fig.add_shape 를 사용해서 어느 subplot에 적용할지를 특정해줘야 합니다. 그렇지 않을 경우 첫번째 subplot 에만 shape가 적용이 되네요.
fig.update_shapes
fig.add_shapes
fig.update_layout(.... shapes=my_shapes)
title_list = ['sub1_1', 'sub1_2', 'sub2_1', 'sub2_2'] #shared_xaxes: True if subplots in the same cols share the xaxes #shared_yaxes: True if subplots in the same rows share the yaxes trace_list = list() trace_list.append(go.Histogram(x = x, y=y, legendgroup='group', xbins=dict(size=0.1), showlegend=True)) trace_list.append(go.Histogram(x = x, y=y, legendgroup='group', xbins=dict(size=0.1), showlegend=True)) ... # legendshow = False when the legend shares with first 2 traces trace_list.append(go.Histogram(x = x, y=y, legendgroup='group', xbins=dict(size=0.1), showlegend=False)) N_rows = 5 my_shape = dict(x0 =1 , y0 =0, x1 = 2, y1 = 10,fillcolor='lightsalmon', opacity = 0.3, line_width = 0, layer='below') fig = make_subplots(rows = N_rows, cols = 1, shared_xaxes=True, subplots_titles = title_list) for idx in range(N_rows): fig.add_trace(trace_list[idx * 2], idx + 1, 1) fig.add_trace(trace_list[idx * 2 +1], idx + 1, 1) # idx+1, 1: shows 2 traces at the same subplot fig.add_shape(my_shape, row = idx+1, 1) fig.update_layout(barmode='stack') # stack | overlay fig.update_yaxes(tick0 = 0, dtick=2, fixedrange=True, range=[0, 10]) # fixedrange = True if all subplots has the same scale fig.update_traces(opacity=0.5) fig.show()
'Programing > Data Science' 카테고리의 다른 글
[엑셀] CSV 파일 저장시 구분자 변경 (0) 2022.02.11 [R] Grouped Bar Chart by plotly (0) 2021.03.08 [Plotly][ValueError] executable=" ".join(executable_list), help_result=help_result (0) 2020.04.03 [R] color names (0) 2020.03.26 [R] Plotly 에서 marker 사용하기 (0) 2020.02.24