728x90
반응형
SMALL
수면 곡선 (Hypnogram) 그리기
import numpy as np
import matplotlib.pyplot as plt
# 수면 단계 데이터
y = 'sleep_stage'
# x 축 데이터: 시간에 해당하는 값
x = list(range(len(y)))
# 단계별 라벨 설정
labels = {0: 'N3', 1: 'N2', 2: 'N1', 3: 'R', 4: 'W'}
# 그래프 그리기
plt.figure(figsize=(15, 6))
plt.plot(x, y, marker='o', linestyle='-')
plt.yticks(ticks=list(labels.keys()), labels=list(labels.values()))
plt.xlabel('Time (hour)')
plt.ylabel('Sleep Stage')
# x축 시간 단위 설정
x_labels = np.arange(0, num_points, 120)
x_ticks = [i for i in x_labels]
x_labels = [f"{i//120}:00" for i in x_labels]
plt.xticks(ticks=x_ticks, labels=x_labels)
plt.title('Sleep Hypnogram')
plt.grid(True)
plt.show()
수동 및 자동 채점 비교
import matplotlib.pyplot as plt
import numpy as np
# 수면 단계 데이터
y1 = 'manual'
y2 = 'auto'
# x 축 데이터: 시간에 해당하는 값
x = list(range(len(y1)))
# 단계별 라벨 설정
labels = {0: 'N3', 1: 'N2', 2: 'N1', 3: 'R', 4: 'W'}
# 그래프 그리기
plt.figure(figsize=(15, 6))
plt.plot(x, y1, marker='', linestyle='-', label='manual scoring')
plt.plot(x, y2, marker='', linestyle='--', color='red', label='auto scoring')
plt.yticks(ticks=[0, 1, 2, 3, 4], labels=['N3', 'N2', 'N1', 'R', 'W'])
num_points = len(x)
x_labels = np.arange(0, num_points, 60)
x_ticks = [i for i in x_labels]
x_labels = [f"{i//2}" for i in x_labels]
plt.xticks(ticks=x_ticks, labels=x_labels)
plt.xlabel('Time (min)')
plt.ylabel('Sleep Stage')
# 범례 추가
plt.legend(loc='upper left', bbox_to_anchor=(0, 0.9))
# 그리드 추가 (배경 실선 제거)
plt.grid(False)
# 그래프 그리기 및 저장
# plt.savefig('sleep_hypnogram.jpg', dpi=300, bbox_inches='tight')
# plt.show()
728x90
반응형
LIST
'Somnology' 카테고리의 다른 글
수면 단계 (Sleep Stage) (0) | 2023.09.08 |
---|---|
HRV 점수 계산 (0) | 2023.09.04 |
RR 간격 (RR interval) (0) | 2023.08.22 |
심박 변이도 (Heart Rate Variability) (0) | 2023.08.22 |
꿈 회상 (0) | 2022.06.22 |