여러 개의 차트를 겹쳐 그리기

Author

Gabriel Yang

Plotly에서 하나의 그래프에 여러 개의 차트를 함께 표현하는 방법

데이터 시각화는 복잡한 데이터를 직관적으로 이해하는 데 큰 도움을 줍니다. 때로는 하나의 그래프에 여러 개의 차트를 함께 표현하여 데이터를 보다 효율적으로 비교하고 분석하는 것이 유용할 수 있습니다.

Plotly는 이러한 작업을 쉽게 할 수 있는 다양한 기능을 제공합니다. 이번 블로그 글에서는 Plotly에서 하나의 그래프에 여러 개의 차트를 함께 표현하는 방법을 소개하겠습니다.

왜 하나의 그래프에 여러 개의 차트를 함께 표현할까?

여러 개의 차트를 하나의 그래프에 함께 표현하는 이유는 다음과 같습니다:

  1. 데이터 비교: 서로 다른 데이터 시리즈를 같은 축에 나란히 표시하여 비교할 수 있습니다.
  2. 다양한 시각화: 동일한 데이터에 대해 여러 시각화 방식을 사용하여 다양한 관점을 제공합니다.
  3. 간결한 시각화: 여러 차트를 하나의 그래프에 포함시켜 공간을 절약하고, 데이터 분석을 직관적으로 만들어 줍니다.

Plotly에서 여러 개의 차트를 하나의 그래프에 표현하기

Plotly에서는 go.Figure를 사용하여 하나의 그래프에 여러 개의 차트를 추가할 수 있습니다. 이를 통해 다양한 데이터 시리즈를 하나의 시각적 컨텍스트에서 표현할 수 있습니다.

1. 기본적인 예제: 선 그래프와 막대 그래프 함께 표시하기

다음은 Plotly를 사용하여 하나의 그래프에 선 그래프와 막대 그래프를 함께 표시하는 방법입니다.

import plotly.graph_objs as go

# 데이터 정의
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 13, 17, 16]
y2 = [5, 7, 3, 8, 6]

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

# 선 그래프 추가
fig.add_trace(go.Scatter(x=x, y=y1, mode='lines', name='Line Plot'))

# 막대 그래프 추가
fig.add_trace(go.Bar(x=x, y=y2, name='Bar Plot'))

# 그래프 레이아웃 업데이트
fig.update_layout(title='Line and Bar Plot Together',
                  xaxis_title='X Axis',
                  yaxis_title='Y Axis')

# 그래프 출력
fig.show()

코드 설명

go.Figure()

  • 빈 그래프 객체를 생성합니다.

add_trace()

  • 첫 번째 add_trace() 호출에서는 선 그래프(Scatter)를 추가합니다.

  • 두 번째 add_trace() 호출에서는 막대 그래프(Bar)를 추가합니다.

  • 두 차트는 같은 X축을 공유하며, 두 개의 데이터 시리즈를 하나의 그래프에 시각화합니다.

update_layout()

  • 그래프의 제목과 X, Y축 레이블을 설정합니다.

2. 다양한 시각화 방법 사용하기: 선 그래프와 스캐터 플롯

이제, 선 그래프와 스캐터 플롯을 하나의 그래프에 함께 표시해 보겠습니다.

import plotly.graph_objs as go

# 데이터 정의
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 13, 17, 16]
y2 = [2, 4, 6, 8, 10]

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

# 선 그래프 추가
fig.add_trace(go.Scatter(x=x, y=y1, mode='lines', name='Line Plot'))

# 스캐터 플롯 추가
fig.add_trace(go.Scatter(x=x, y=y2, mode='markers', name='Scatter Plot'))

# 그래프 레이아웃 업데이트
fig.update_layout(title='Line Plot and Scatter Plot Together',
                  xaxis_title='X Axis',
                  yaxis_title='Y Axis')

# 그래프 출력
fig.show()

코드 설명

mode='lines'mode='markers'

  • mode='lines'는 선 그래프를 생성하며, mode='markers'는 점으로 데이터를 표현하는 스캐터 플롯을 생성합니다.

  • 서로 다른 시각화 방식을 같은 X축에서 표현합니다.

3. 두 개의 Y축을 사용하는 경우: 선 그래프와 막대 그래프

하나의 그래프에 두 개의 차트를 표시하면서 서로 다른 Y축을 사용하는 경우, 다음과 같은 방법으로 구현할 수 있습니다.

import plotly.graph_objs as go

# 데이터 정의
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 13, 17, 16]
y2 = [50, 40, 30, 20, 10]

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

# 첫 번째 Y축에 대한 선 그래프 추가
fig.add_trace(go.Scatter(x=x, y=y1, mode='lines', name='Line Plot', yaxis='y1'))

# 두 번째 Y축에 대한 막대 그래프 추가
fig.add_trace(go.Bar(x=x, y=y2, name='Bar Plot', yaxis='y2'))

# 그래프 레이아웃 업데이트 (두 개의 Y축 설정)
fig.update_layout(
    title='Line Plot and Bar Plot with Two Y-Axes',
    xaxis_title='X Axis',
    yaxis_title='Primary Y Axis',
    yaxis2=dict(
        title='Secondary Y Axis',
        overlaying='y',
        side='right'
    )
)

# 그래프 출력
fig.show()

코드 설명

yaxis='y1'yaxis='y2'

  • 각 차트에 대해 Y축을 다르게 지정합니다.

yaxis2 설정

  • yaxis2를 설정하여 두 번째 Y축을 정의하고, 기본 Y축(y)과 함께 표시하도록 설정합니다.

  • overlaying='y' 속성은 두 번째 Y축이 첫 번째 Y축과 겹치도록 만듭니다.

  • side='right' 속성은 두 번째 Y축을 그래프의 오른쪽에 배치합니다.

결론

Plotly에서는 다양한 시각화 방법을 통해 하나의 그래프에 여러 개의 차트를 함께 표현할 수 있습니다. 선 그래프와 막대 그래프, 스캐터 플롯 등 다양한 차트 유형을 조합하여 복잡한 데이터를 효과적으로 시각화할 수 있습니다.

또한, 서로 다른 Y축을 사용하여 데이터의 차원을 보다 명확하게 비교할 수 있습니다.