Plotly에서 축 설정하기

Author

Gabriel Yang

Plotly는 Python에서 인터랙티브한 그래프를 쉽게 만들 수 있는 강력한 도구입니다.

그래프를 만들 때 축의 설정과 라벨링은 데이터를 이해하기 쉽게 시각화하는 데 매우 중요합니다.

이 블로그 글에서는 Plotly에서 축을 설정하고 라벨을 붙이는 방법을 예시와 함께 자세히 설명하겠습니다.

Plotly에서 축 설정하기

데이터 시각화에서 축 설정과 라벨링은 그래프의 가독성을 높이는 중요한 요소입니다. Plotly를 사용하면 그래프의 각 축을 쉽게 커스터마이징할 수 있습니다.

이 글에서는 plotly.graph_objs 라이브러리를 사용해 간단한 산점도를 만들고, 축의 범위, 라벨, 틱(tick) 등을 설정하는 방법을 단계별로 설명하겠습니다.

1. 기본 산점도 만들기

먼저, Plotly를 사용해 간단한 산점도를 만들어보겠습니다.

import plotly.graph_objs as go

# 데이터 생성
x_data = [1, 2, 3, 4, 5]
y_data = [10, 14, 12, 18, 16]

# 산점도 객체 생성
fig = go.Figure()
fig.add_trace(
    go.Scatter(
        x=x_data,
        y=y_data,
        mode='markers'
    )
)

# 레이아웃 설정
fig.update_layout(
    title='기본 산점도',
    xaxis=dict(
    title='X축 라벨'
    ),
    yaxis=dict(
        title='Y축 라벨'
    )
)

# 그래프 출력
fig.show()

위 코드는 기본적인 산점도를 생성합니다. 이제 이 그래프에 축 설정과 라벨링을 추가해보겠습니다.

2. 축 범위 설정하기

축의 범위를 직접 설정하고 싶을 때는 range 속성을 사용하면 됩니다.

fig.update_layout(
    title='기본 산점도',
    xaxis=dict(
    title='X축 라벨',
    range=[0, 6]  # X축 범위 설정
    ),
    yaxis=dict(
        title='Y축 라벨',
        range=[8, 20]  # Y축 범위 설정
    )
)

# 그래프 출력
fig.show()

위 코드에서는 X축의 범위를 [0, 6], Y축의 범위를 [8, 20]으로 설정했습니다. x축과 y축의 범위가 지정되면서 데이터의 시각화 범위가 결정됩니다.

3. 틱 설정하기

축에 표시되는 틱(tick)은 데이터의 세부 정보를 제공하는 데 도움이 됩니다. Plotly에서는 tickvals, ticktext, dtick 등을 사용해 틱을 세밀하게 조정할 수 있습니다.

fig.update_layout(
    title='기본 산점도',
    xaxis=dict(
        title='X축 라벨',
        tickvals=[1, 2, 3, 4, 5],  # X축 틱 값
        ticktext=['A', 'B', 'C', 'D', 'E'],  # X축 틱 라벨
        dtick=1  # X축 틱 간격
    ),
    yaxis=dict(
        title='Y축 라벨',
        dtick=1  # Y축 틱 간격
    )
)
fig.show()

위 코드에서는 X축의 틱 값을 [1, 2, 3, 4, 5]로 설정하고, 각 틱에 대응하는 라벨을 ['A', 'B', 'C', 'D', 'E']로 지정했습니다. Y축의 틱 간격은 1로 설정했습니다.

4. 로그 스케일 적용하기

데이터의 범위가 클 때는 로그 스케일을 사용하여 축을 설정할 수 있습니다.

import plotly.graph_objects as go
import numpy as np

# 예제 데이터 생성
x = np.logspace(0.1, 2, 100)
y = np.exp(x / 50)

# 그래프 생성
fig = go.Figure()

# 선 그래프 추가
fig.add_trace(go.Scatter(x=x, y=y, mode='markers', name='Exponential Growth'))

# 로그 스케일 적용
fig.update_layout(
    title='Logarithmic Scale Example',
    xaxis_title='X Axis (Log Scale)',
    yaxis_title='Y Axis',
    xaxis_type='log',
    yaxis_type='log'
)

# 그래프 출력
fig.show()

위 코드에서는 X축과 Y축 모두에 로그 스케일을 적용했습니다.

데이터 생성

  • x = np.logspace(0.1, 2, 100): 0.1부터 2까지의 범위에서 로그 스케일로 100개의 값을 생성합니다.

  • y = np.exp(x / 50): 지수 함수적 관계를 갖는 y 값을 생성합니다.

그래프 생성

  • go.Figure(): Plotly의 Figure 객체를 생성합니다.

  • fig.add_trace(go.Scatter(…)): 선 그래프를 추가합니다. 로그 스케일 적용:

  • xaxis_type=‘log’와 yaxis_type=’log’: x축과 y축에 로그 스케일을 적용합니다.

그래프 출력

  • fig.show(): 인터랙티브한 그래프를 웹 브라우저에서 표시합니다.

5. 축 레이블 회전 및 서식 설정

축 레이블을 회전하거나 서식을 조정하면 가독성을 높일 수 있습니다. tickangle 속성을 사용하여 틱 레이블의 회전을 설정할 수 있습니다.

# 데이터 생성
x_data = [1, 2, 3, 4, 5]
y_data = [10, 14, 12, 18, 16]

# 산점도 객체 생성
fig = go.Figure()
fig.add_trace(
    go.Scatter(
        x=x_data,
        y=y_data,
        mode='markers'
    )
)

fig.update_layout(
    title='산점도 with 축 방향 및 그리드선 설정',
    xaxis=dict(
        title='X축 라벨',
        tickangle=-45  # X축 틱 레이블 회전
    ),
    yaxis=dict(
        title='Y축 라벨',
        tickangle=-45  # X축 틱 레이블 회전

    )
)
fig.show()

6. 축의 날짜 스케일 설정

이 코드에서는 X축에 날짜 형식을 적용하여 시간의 흐름에 따라 데이터를 시각화했습니다.

import pandas as pd
import numpy as np

# 날짜 데이터 생성
dates = pd.date_range(start='2023-01-01', periods=5)
values = np.random.randint(1, 10, size=5)

# 산점도 객체 생성
fig = go.Figure()
fig.add_trace(
    go.Scatter(
        x=dates,
        y=values,
        mode='markers'
    )
)

fig.update_layout(
    title='산점도 with 날짜 형식',
    xaxis=dict(
        title='날짜',
        type='date'  # X축 날짜 형식 적용
    ),
    yaxis=dict(
        title='값'
    )
)

fig.show()

7. 틱, 제목 폰트 설정

tickfont, titlefont 등의 속성을 사용하여 스타일을 설정할 수 있습니다.

fig.update_layout(
    title='산점도 with 날짜 형식',
    xaxis=dict(
        title='날짜',
        tickfont=dict(size=14, color='blue'),  # 틱 폰트 설정
        titlefont=dict(size=16, color='red')  # 제목 폰트 설정
    ),
    yaxis=dict(
        title='값',
        tickfont=dict(size=14, color='green'),  # 틱 폰트 설정
        titlefont=dict(size=16, color='purple')  # 제목 폰트 설정
    )
)
fig.show()

결론

Plotly에서는 축의 라벨, 범위, 틱, 스케일 등을 간단하게 설정할 수 있습니다. 이러한 기능을 통해 데이터 시각화를 보다 직관적으로 만들 수 있습니다.