수치는 그냥 적당히 지어냈습니다.
아래에서 범위로 표시된 게 이완기~수축기 혈압,
삼각형이 Oxygen saturation,
점모양이 Heart rate 입니다.
(미리 사족으로 말씀드리면,
R studio 사용 시 plotting 은 디스플레이 해상도가 어느 정도 되는 상황에서 그리는 걸 추천드립니다.
우측하단에 plot 창에서 미리 그래프가 그려지는데
해상도가 구리면 legend가 터무니 없이 크게 그려지거나
그래프 테두리가 안그려지는 등 문제가 생기더라고요...
Export를 할 때도 말입니다!!
windows() 명령어로 해결할래면 새 창에 그려지긴 하는데
개인적으로는 가능하면 그냥 고해상도 환경에서 작업하시는 걸 권하고 싶습니다.)
일단 plot을 만들어봅니다.
plot(vs$time, vs$PR, ylim=c(40,160), pch=16, xlab = "Time(min.)", ylab = "")
arrows(vs$time, vs$SBP, vs$time, vs$DBP, code=3, length = 0.07,
angle=135)
points(vs$time, vs$SpO2, pch=6)
일단, 처음 plot 함수에 의해 x축과 y축이 결정됩니다.
(명령어 설명: x축 변수는 vs이라는 data에서 time이라는 열을 가져온다, y축 변수는 vs이라는 data에서 PR을 가져온다)
Y축 범위를 40~160으로 잡은 것은 추후 혈압을 나타내는 그래프도 저 바탕에 그려질 것이기 때문입니다
pch = 16은 heart rate의 기호를 R에서 미리 지정한 16번 기호로 하겠다는 것입니다.
이건 뭐 그때그때 찾아보시는 수 밖에. 엄청 자주 하시면 어느 정도 외우시겠죠.
xlab은 x축 라벨을 따옴표 안의 내용으로 하겠다는 것입니다.
xlab, ylab을 지정하지 않으면 명령어의 열 이름으로 그대로 들어가는데 안이쁘겠죠? (e.g. vs$time이런 식으로 출력)
"Time(min.)"이나 "Time(sec.)" 등 원하시는대로 하십시오
ylab = ""로 해준 건 vs$PR이 안 예뻐서, 아예 나타나지 말고 빈 칸으로 나오라고 넣어줬습니다.
게다가 Y축에 BPM, mmHg, %라는 복합적 단위가 적용되는 것이므로,
한 가지만 labeling 하는 것도 상기 그래프에선 적당치 않습니다.
Arrows는 원래 화살표를 그리는 함수인데 혈압을 표시하는데 씁니다.
첫번째 x,y 좌표에서 두번째 x,y 좌표로 화살표를 긋는 명령어입니다.
code=3은 양쪽으로 arrowhead가 있는 화살표를 고른 것입니다.
length 0.07은 arrowhead 길이가 너무 길면 보기 안좋아서 좀 쳐준 겁니다.
Angle 135도는 보통 바이탈 표시할 때 위쪽 SBP를 화살표 머리를 아래로,
아래쪽 DBP 화살표 머리를 위로 하기 때문에 들어갔습니다.
산소포화도는 points라는 함수를 통해 그리고, pch 6번을 활용했습니다.
뭐 이것만해도 충분한 vital sign graph일 수도 있겠지만
x축 tick 간격이 너무 잦아 다시 그리고 싶을 수 있죠
그럼 처음 plot에서 xaxt와 yaxt를 n으로 하여 새로 뽑읍시다.
plot(vs$time, vs$PR, ylim=c(40,160), pch=16, xlab = "Time(min.)", ylab = "",xaxt="n", yaxt="n")
arrows(vs$time, vs$SBP, vs$time, vs$DBP, code=3, length = 0.07,
angle=135)
points(vs$time, vs$SpO2, pch=6)
축이 비었으니 x축 y축 그려내는 명령어를 먹입니다.
그럼 이제 '아, 대강 한 시간 지나서 이 정도 수치였다' 하고 활력 징후 보기는 편해지셨을 겁니다.
마무리로 수치 읽기를 편하게 하는 명령어 한 두개 더 쓰고 끝낼게요
#보조선 그리기
abline(h=seq(40,140,20), v=seq(0,120,30), col="gray", lty=3)
h : height 에 대한 보조선. 40~140mmHg의 범위에서 20mmHg마다 선 넣어달라
v : vertical 방향 보조선 0~120분 범위에서 30분마다 줄 그어달라.
보조선이 튀면 산만해져서 gray 색이 좋고, lty는 line type 고르는 거. 3번은 점선.
#범례
legend("topright", legend = c("NBP","HR",expression('SpO'[2])), pch=c(NA, 19, 6) )
범례 만들기는 포스팅 따로 했으니 참고하세요~
P.S. 많이 도와주신 ㄱㅎㅇ 선생님 감사드려요 ㅎㅎㅎ
'의료 > R Statistics' 카테고리의 다른 글
Vital sign 범례 그리기 (0) | 2020.10.08 |
---|