그래프 모양 꾸미기

Author

Gabriel Yang

Plotly에서 레이아웃 설정하는 방법

그래프의 시각적 요소를 조정하여 더욱 멋지고 이해하기 쉬운 시각화를 만들기 위해 레이아웃을 설정하는 방법이 중요합니다. 이 글에서는 Plotly에서 레이아웃을 설정하는 방법을 다양한 예시와 함께 알아보겠습니다.

1. Plotly 기본 그래프 생성

먼저, Plotly로 간단한 그래프를 생성해보겠습니다. 아래 코드는 기본적인 선형 그래프를 생성합니다.

import plotly.graph_objs as go
import plotly.io as pio

# 간단한 데이터
x = [1, 2, 3, 4, 5]
y = [10, 15, 13, 17, 22]

# 그래프 객체 생성
fig = go.Figure()
fig.add_trace(
    go.Scatter(x=x, y=y, mode='lines', name='선 그래프')
)

fig.update_layout(
    title='기본 선 그래프',
    xaxis=dict(title='X 축 제목'),
    yaxis=dict(title='Y 축 제목')
)

fig.show()

위 코드에서는 go.Layout 객체를 사용하여 그래프의 기본 레이아웃을 설정합니다. title, xaxis, yaxis 등의 속성을 사용해 그래프의 제목과 축 레이블을 설정할 수 있습니다.

fig.update_layout 함수는 Plotly에서 그래프의 레이아웃 속성을 쉽게 업데이트할 수 있는 매우 유용한 방법입니다.

이 함수는 기존의 레이아웃 속성에 새로운 값을 추가하거나, 기존 값을 변경하는 데 사용됩니다. go.Layout 객체를 생성하고 그것을 go.Figure 객체에 전달하는 방법 대신, fig.update_layout을 사용하면 보다 간단하게 레이아웃을 조정할 수 있습니다.

2. Plotly 그래프 속성

Plotly의 레이아웃에는 다양한 속성을 설정할 수 있습니다. 대표적인 속성들을 예시와 함께 살펴보겠습니다.

2.1 그래프 제목 및 축 제목 설정

그래프와 축에 제목을 추가하는 방법은 간단합니다. 다음 예시는 그래프와 축에 제목을 추가하는 방법을 보여줍니다.

fig = go.Figure()
fig.add_trace(
    go.Scatter(x=x, y=y, mode='lines', name='선 그래프')
)

fig.update_layout(
    title='커스텀 선 그래프',  # 그래프 제목
    xaxis=dict(title='시간(초)'),  # X축 제목
    yaxis=dict(title='거리(m)')  # Y축 제목
)
fig.show()

2.2. 그래프의 폰트 크기 설정

font: 그래프의 폰트 스타일을 설정합니다. 이 예시에서는 폰트 크기를 18로 설정했습니다.

fig = go.Figure()
fig.add_trace(
    go.Scatter(x=x, y=y, mode='lines', name='선 그래프')
)

fig.update_layout(
    title='커스텀 선 그래프',        # 그래프 제목
    xaxis=dict(title='시간(초)'),   # X축 제목
    yaxis=dict(title='거리(m)'),    # Y축 제목
    font=dict(size=18),             # 폰트 크기 설정
)
fig.show()

2.3 그리드 설정

축의 그리드 라인은 gridcolorgridwidth 속성을 사용하여 설정할 수 있습니다.

fig = go.Figure()
fig.add_trace(
    go.Scatter(x=x, y=y, mode='lines', name='선 그래프')
)

fig.update_layout(
    title='그리드 라인 설정',
    xaxis=dict(
        title='X 축',
        gridcolor='lightblue',  # X축 그리드 라인 색상
        gridwidth=2  # X축 그리드 라인 두께
    ),
    yaxis=dict(
        title='Y 축',
        gridcolor='lightgreen',  # Y축 그리드 라인 색상
        gridwidth=2  # Y축 그리드 라인 두께
    ),
    paper_bgcolor='lightblue'  # 전체 배경색
)
fig.show()

2.4 범례 설정

범례는 legend 속성을 사용하여 위치 및 스타일을 조정할 수 있습니다.

fig = go.Figure()
fig.add_trace(
    go.Scatter(x=x, y=y, mode='lines', name='선 그래프')
)

fig.update_layout(
    title='범례 위치 설정',
    legend=dict(
        x=0.1,  # 범례의 X 위치 (0: 왼쪽, 1: 오른쪽)
        y=0.9,  # 범례의 Y 위치 (0: 아래, 1: 위)
        bgcolor='rgba(255,255,255,0.5)',  # 범례 배경색 (반투명)
        bordercolor='black',  # 범례 테두리 색상
        borderwidth=2  # 범례 테두리 두께
    )
)
fig.show()

2.5 여백 설정

그래프 주변의 여백은 margin 속성을 사용하여 조정할 수 있습니다.

fig = go.Figure()
fig.add_trace(
    go.Scatter(x=x, y=y, mode='lines', name='선 그래프')
)

fig.update_layout(
    title='그래프 여백 설정',
    margin=dict(
        l=200,  # 왼쪽 여백
        r=200,  # 오른쪽 여백
        t=200,  # 위쪽 여백
        b=200  # 아래쪽 여백
    )
)
fig.show()

2.6 그래프 크기 조정

그래프의 크기는 widthheight 속성을 사용하여 설정할 수 있습니다.

fig = go.Figure()
fig.add_trace(
    go.Scatter(x=x, y=y, mode='lines', name='선 그래프')
)

fig.update_layout(
    title='그래프 크기 조정',
    width=500,  # 그래프 너비
    height=300  # 그래프 높이
)
fig.show()

2.7 배경색 설정

그래프의 배경색은 plot_bgcolorpaper_bgcolor 속성을 사용하여 설정할 수 있습니다.

  • plot_bgcolor: 그래프 그리드 영역의 배경색
  • paper_bgcolor: 전체 그래프의 배경색
fig = go.Figure()
fig.add_trace(
    go.Scatter(x=x, y=y, mode='lines', name='선 그래프')
)

fig.update_layout(
    title='배경색 설정',
    plot_bgcolor='rgba(0,0,0,0)',  # 그래프 그리드 배경색 (투명)
    paper_bgcolor='lightgrey'  # 전체 배경색
)
fig.show()

plotly에서는 다양한 색상 옵션을 제공하여 그래프의 시각적 요소를 커스터마이즈할 수 있습니다.

이 색상들은 개별 요소의 색상 설정뿐만 아니라, 색상 스케일, 색상 연속체 등 다양한 용도로 사용됩니다. 다음은 plotly에서 사용할 수 있는 색상 옵션들에 대한 정보입니다.

plotly는 CSS 색상 이름을 지원합니다. 약 140여 가지의 색상 이름을 사용할 수 있습니다. 대표적인 색상 이름은 다음과 같습니다:

아래는 plotly에서 사용 가능한 색상 옵션을 정리한 표입니다.

색상 옵션 종류 설명 예시
기본 색상 이름 (Named Colors) CSS에서 지원하는 기본 색상 이름을 사용할 수 있습니다. 'red', 'blue', 'green'
Hex 코드 (Hexadecimal Colors) 16진수 색상 코드를 사용해 색상을 지정합니다. '#FF5733' (오렌지색)
RGB 색상 (RGB Colors) RGB 값을 사용해 색상을 지정합니다. 'rgb(255, 87, 51)' (오렌지색)
RGBA 색상 (RGBA Colors) RGBA 값을 사용해 색상을 지정하며, 불투명도를 추가로 설정할 수 있습니다. 'rgba(255, 87, 51, 0.5)' (50% 투명)
컬러 스케일 (Color Scales) 데이터를 기준으로 색상을 자동으로 지정하며, 연속형, 순차적, 발산형 컬러 스케일을 제공합니다. 'Viridis', 'Cividis', 'Plasma'
기본 팔레트 (Default Palette) plotly에서 여러 시각 요소에 자동으로 적용되는 기본 색상 팔레트를 제공합니다. '#1f77b4', '#ff7f0e', '#2ca02c'

이 표는 plotly에서 다양한 색상 설정 옵션을 한눈에 볼 수 있도록 정리한 것입니다. 각 색상 옵션에 따라 그래프의 시각적 스타일을 자유롭게 커스터마이즈할 수 있습니다.

Named Colors는 CSS 표준에서 정의된 색상 이름을 사용하여 색상을 지정할 수 있는 방법입니다. plotly는 이러한 색상 이름을 모두 지원합니다. 아래는 주요 Named Colors의 목록입니다.

Named Colors는 CSS 표준에서 정의된 색상 이름을 사용하여 색상을 지정할 수 있는 방법입니다. plotly는 이러한 색상 이름을 모두 지원합니다. 아래는 주요 Named Colors의 목록입니다.

기본 색상

색상 이름 색상 Hex 코드
Black #000000 #000000
White #FFFFFF #FFFFFF
Red #FF0000 #FF0000
Lime #00FF00 #00FF00
Blue #0000FF #0000FF
Yellow #FFFF00 #FFFF00
Cyan #00FFFF #00FFFF
Magenta #FF00FF #FF00FF
Silver #C0C0C0 #C0C0C0
Gray #808080 #808080
Maroon #800000 #800000
Olive #808000 #808000
Green #008000 #008000
Purple #800080 #800080
Teal #008080 #008080
Navy #000080 #000080

추가 색상

색상 이름 색상 Hex 코드
Orange #FFA500 #FFA500
Gold #FFD700 #FFD700
Pink #FFC0CB #FFC0CB
Coral #FF7F50 #FF7F50
Indigo #4B0082 #4B0082
Violet #EE82EE #EE82EE
LightGreen #90EE90 #90EE90
DarkGreen #006400 #006400
LightBlue #ADD8E6 #ADD8E6
DarkBlue #00008B #00008B
LightGray #D3D3D3 #D3D3D3
DarkGray #A9A9A9 #A9A9A9
Chocolate #D2691E #D2691E
Salmon #FA8072 #FA8072
Khaki #F0E68C #F0E68C

기타 색상

plotly는 CSS에서 정의된 약 140개의 색상 이름을 모두 지원합니다. 전체 목록은 W3Schools Named Colors와 같은 사이트에서 확인할 수 있습니다. 이를 통해 plotly에서 다양한 색상을 쉽게 지정하고 사용할 수 있습니다.

3. 예시: 복합 레이아웃 설정

위에서 배운 내용을 종합하여, 다양한 레이아웃 설정을 적용한 예시를 만들어 보겠습니다.

fig = go.Figure()
fig.add_trace(
    go.Scatter(x=x, y=y, mode='lines', name='선 그래프')
)

fig.update_layout(
    title='종합 레이아웃 설정 예시',
    width=800,
    height=600,
    plot_bgcolor='rgba(240,240,240,1)',
    paper_bgcolor='lightyellow',
    xaxis=dict(
        title='X 축 제목',
        gridcolor='lightblue',
        gridwidth=2
    ),
    yaxis=dict(
        title='Y 축 제목',
        gridcolor='lightgreen',
        gridwidth=2
    ),
    legend=dict(
        x=0.1,
        y=0.9,
        bgcolor='rgba(255,255,255,0.5)',
        bordercolor='black',
        borderwidth=2
    ),
    margin=dict(
        l=60,
        r=60,
        t=120,
        b=60
    )
)

# 그래프 생성
fig.show()

이 코드는 다양한 레이아웃 설정을 적용하여, 더욱 맞춤화된 그래프를 생성합니다.

마무리

Plotly에서 레이아웃 설정은 시각화의 가독성과 미적 감각을 높이는 데 매우 중요한 요소입니다. 이 글에서는 기본적인 레이아웃 설정부터 배경색, 그리드, 범례, 여백 조정에 이르기까지 다양한 방법을 살펴보았습니다.