본문 바로가기

Content

<화물차를 쉬게 하라> - 2. 타이어 같은 운행 기록의 표현

이 글에서는 시사IN 기사 <화물차를 쉬게 하라>를 위해 했던 작업을 다룬다.

 

 

시사IN x VWL 특별기획 화물차를 쉬게 하라

DTG 데이터로 본 365일 24시간의 노동

truck.sisain.co.kr

두 번째 글로, 한 달의 운행 기록을 타이어 모양의 시간표로 표현했던 과정을 적어보았다.

 

 

사실, 한 달의 시간표가 나오기 전까지 꽤 많은 주제로 탐색을 했다.

trip의 기종점만 모아보기도 하고, 사고다발구간과 비교해보기도 하고, 특정 지역을 지나는 궤적만 분석해보기도 하는 등, 운전자의 피로도와 사고의 관계를 찾아보려고 했지만, 데이터의 한계로 인해 명확하게 말할 수 없는 부분들이 있었다.

서울대학교 환경대학원 한상진 교수님, 시사IN의 변진경, 전혜원 기자님 이렇게 세 분과의 여러 차례 논의 끝에 시간표 형식의 그래프 정도로 정리해보기로 결정했다.

 

 

 

운전자별 한 달의 운행 기록을 시간표처럼 나타내려는 생각을 떠올린게 어느 시점이었는지 정확히 기억나진 않는다.

운전자별로 모아놓은 데이터를 trip별로 가공해봤고, trip은 운행(drive), trip과  trip 사이의 행간에 휴식(rest)가 있는 것으로 생각해서 아래와 같은 그래프를 그렸다.

 

 

 

그렇게 5만여개의 그래프를 만들어놓고 넘겨보고 있자니, 운전자별로 운행의 편차가 크다는 것을 알게 되었다.

그리고 어떤 사람은 지나치게 오래 운행한다는 생각도 들었다. 데이터 분석이 흥미로워지는 지점은 바로 이렇게 대상들의 편차가 큰 지점을 발견했을 때다. 

 

주행과 휴식의 이분법적 구분에서 주행 시간과 휴식 시간을 좀 더 구분해보기로 했다. 제도상의 제약, 즉 2시간 연속운행 마다 15분 휴식해야 한다는 점을 반영해봤다.

 

2시간 이상 쉬지 않고 주행하는 경우,

2시간 미만 주행하는 경우

15분 미만으로 운행하지 않은 경우

15분~8시간 운행하지 않은 경우

8시간 이상 운행하지 않은 경우(어딘가에서 푹 쉰다고 가정)

 

 

그렇게, 다시 그림을 그렸다.

 

 

어느 날은 문득 '타이어처럼' 표현해봐야겠다는 생각이 들었다.

아이디어를 구체화시키는 과정에서, '충분히 쉰 사람의 시간표는 안정적인 타이어처럼' 보이게 만들고, '잘 쉬지 못하는 사람의 시간표는 '위태위태하게 터질 것 같은, 혹은 매끄럽게 굴러가지 못하는 것처럼' 표현하고 싶었다.

 

주행과 휴식의 반지름을 각각 다르게 두었는데, 휴식의 경우 반지름을 크게 두어 그리고, 주행의 경우 좀 더 짧게, 2시간 연속 주행의 경우 반지름을 많이 짧게 그렸다. 위의 그림처럼 잠깐씩 휴식할 경우에는 타이어가 굴러갈 때 바닥에 닿는 부분들이 가늘기 때문에 휘거나 부러질 수 있을 것처럼 보인다. 다시 말해, 충분히 휴식을 취하지 않은 경우 안정적이지 못한 타이어가 된다.

 

 

아래의 경우처럼 안정적인 타이어처럼 보이는 경우도 있었다. 휴식을 충분히 한 경우다.

 

 

원래는 R에서 그린 이 그림으로 마무리해서 기사화 될 예정이었다.

그런데 조금 더 해보고 싶다는 생각이 들었다. R의 ggplot2는 주어진 함수를 쓰는 만큼 아무래도 표현이 제한적일 수 밖에 없다. 혹 방법이 있을지는 모르겠으나, R의 명령어들은 모든게 꽁꽁 감춰진 느낌이다. 알고 나면 한두줄이면 되는데, 그 적합한 한두줄을 찾아내기 위해 시간을 많이 써야 한다.

 

반면 자바스크립트의 d3.js는 자유롭다. 많은 부분을 직접 그려줘야 하지만, 대신 그리고자 하면 대부분 그릴 수 있다. 그래서 자바스크립트에서 다시 그려보기로 했고, svg 형식을 일러스트레이터(벡터) 형식으로 내보내서 좀 더 깔끔하게 인쇄할 수 있게 되었다.

 

 

 

표현이 자유로워졌으므로 좀 더 구상을 했고, '안정적인 타이어'와 '불안정한 타이어'를 표현하기 위해 휴식 시간에 따라 각각의 파이 부분들의 반지름을 다르게 두기로 했다. 즉, 짧은 휴식은 짧은 반지름으로, 8시간 이상의 휴식은 정해진 테두리의 끝까지 뻗은 반지름으로 그렸다.

 

만약 하루 8시간씩 꼬바꼬박 휴식을 했다면 안정적인 타이어로 보이게 된다. 위 그림처럼 짧게 쉬거나 자주 쉬지 못하면 덜컹덜컹 굴러가는 타이어처럼 보인다.

 

사실, 안 쪽의 휠 부분에는 휴일과 평일을 표현했다. 검은 색은 휴일, 회색은 평일이다. 그러나 너무 자세한 설명은 오히려 정보를 읽는데 방해가 될 것 같아서 굳이 그 부분의 설명은 하지 않기로 했다.

 

 

그렇게 전체를 그려봤더니 정말 위험해보이는 타이어가 많았다.

어떤 사람은 한 달에 단 하루만 푹 쉰다. 셋째 줄 가장 왼쪽 그래프를 보면, 마치 고무가 모두 찢겨 나간 타이어같다. 

 

 

 

조사하다보니 낮과 밤이 바뀌어 일하는 사람들도 있었다. 어떤 사람들은 하루하루가 정말 불규칙했고 삶에서 운행 패턴에서 어떤 반복적인 리듬이 읽히지 않았다. 예측 불가능할 것이므로 정말 힘들 것 같았다.

사실 이런 부분은 위의 한달 그래프에서는 잘 보이지 않는다. 그래서 아래 그림처럼 우리가 흔히 보는 달력과 24시간 기준 그래프로 만들어보기도 했다.

 

 

30일 중 하루에 설명을 추가했다. 이 사람은 쉬는 시간도 적을 뿐더러 하루하루가 정말 다르다. 쉬는 날도, 쉬는 시간도 예측할 수 없는 삶을 살고 있다.

 

 

 

어떤 사람은 주말 잘 지키고 주중에도 규칙적으로 낮에만 일한다.

 

 

이 사람은 요일별로 어느정도 규칙이 있다.그래도 쉬는 날이 일정치 않고 야간에도 종종 운전한다.

 

 

 

이 경우는 상당히 규칙적으로 보이지만, 밤에 사는 사람이다. 낮과 밤이 완전히 뒤바뀐채로 한 달을 보낸다.

 

 

 

 

여기도 푹 쉬는 시간이 없고 불규칙적이다.

많은 화물차 운전자들이 소위 '콜을 뛰'며  예측불가능한 삶을 살아가고 있다.

 

 

그림이 많을 수록 정보 전달 역시 풍성해지지만, 그래도 지면과 독자에 대한 기대 시간의 한계로 인해 위처럼 달력에 표현한 다이어그램은 사용하지 않기로 했다.

 

 

웹에서의 표현은 인터랙티브라는 여지가 남아있었다. 스크롤 할 때마다 한 달의 시간이 조금씩 전개되도록 했고, 글에서 설명하는 부분에 하이라이트 효과를 내기도 했다. 

혹시나 시간과 공간을 매치시키면 개인정보 식별 우려가 있어서, 타이어 시간표의 전개 시점과 아래 지도상의 위치 정보는 다소 어긋나도록 했다.

 

 

챕터별 인트로에도 타이어 다이어그램을 사용했다. 

그래프 하나당, 생각보다 SVG 개체들이 꽤 많아서, 여섯개를 동시에 띄워놓고 돌리는 작업은 모바일에서 퍼포먼스가 나오지 않았다. canvas로 바꿔서 시도해 볼 수도 있었지만 작업시간이 부족해서 그렇게 하지 못하고, 일단 한장한장 이미지로 만든 후 이미지를 돌리는 방법으로 대체했다.

 

 

 

 

 

여기까지, 운행기록의 타이어 표현 과정에 대해서 기억나는대로 적어보았다.

데이터 시각화는 내용과 별개가 아니다. 스토리의 자연스러운 전개 과정에서 이해되어야 가장 좋다. 아래의 링크에 온전한 기사 텍스트와 데이터 시각화의 결과물이 있다. 일독을 권한다.

 

시사IN x VWL 특별기획 화물차를 쉬게 하라

DTG 데이터로 본 365일 24시간의 노동

truck.sisain.co.kr