본문 바로가기
Python Library/Matplotlib

[Matplotlib] 다중 축을 사용한 그래프 생성

by goatlab 2023. 5. 25.
728x90
반응형
SMALL
import matplotlib.pyplot as plt
import numpy as np

# 데이터 1
data1 = [(1, 4), (3, 7), (5, 9)]

# 데이터 2
data2 = [(2, 6), (4, 8), (6, 10)]

# 가로 막대 그래프 생성
fig, ax1 = plt.subplots()

# 데이터 1을 막대 그래프로 표시
for i, (start, end) in enumerate(data1):
    ax1.barh(i, end-start, left=start, height=0.4, align='center', color='steelblue', alpha=0.7)

# 데이터 2를 막대 그래프로 표시
for i, (start, end) in enumerate(data2):
    ax1.barh(i, end-start, left=start, height=0.4, align='center', color='orange', alpha=0.7)

# 축 설정
ax1.set_ylim(-0.5, max(len(data1), len(data2))-0.5)
ax1.set_xlim(0, max(max(end for _, end in data1), max(end for _, end in data2)))
ax1.set_yticks(range(max(len(data1), len(data2))))
ax1.set_yticklabels([f'Data {i+1}' for i in range(max(len(data1), len(data2)))])
ax1.set_xlabel('Value')
ax1.set_ylabel('Data')

# 두 번째 y축 생성
ax2 = ax1.twiny()
ax2.set_xlim(ax1.get_xlim())

# 두 번째 y축 레이블 설정
ax2.set_yticks(range(max(len(data1), len(data2))))
ax2.set_yticklabels([f'Data {i+1}' for i in range(max(len(data1), len(data2)))])
ax2.set_ylabel('Data')

# 그래프 출력
plt.show()

728x90
반응형
LIST