네 집단이 서로 주고받은 요청을 원 안에 놓는다
검색팀, 생성팀, 검증팀, 사람 검토팀이 한 주 동안 서로 넘긴 작업 수를 보고 싶다. 코드(Chord) 다이어그램은 각 집단을 원 둘레의 원호로 배치하고, 집단 사이의 연결량을 원 안쪽 리본으로 잇는다. 둘레의 길이는 집단의 합계, 리본 끝의 너비는 두 집단 사이 양을 나타낸다.
D3의 chord 레이아웃은 정사각 행렬을 입력받아 원호 집단과 리본 관계를 계산한다. 아래 숫자는 읽기 연습용 교육 자료다. 실제 팀이나 모델의 작업 로그가 아니다. 컴퓨터 ‘코드(code)’가 아니라 원의 두 점을 잇는 현을 뜻하는 영어 chord에서 온 이름임을 구분한다.
도표를 좌우로 움직여 전체를 확인하세요.
행렬·원호·리본·방향을 따로 읽는다
입력 행렬의 행은 출발 집단, 열은 도착 집단으로 정한다. 셀 M[i][j]는 i에서 j로 이동한 양이다. 원호 길이는 해당 집단과 연결된 양의 합에 비례한다. 리본은 source와 target 끝을 가지며 각 끝의 너비가 행렬값을 반영한다. 방향이 없는 그림에서는 한 리본이 두 값을 함께 나타낼 수 있다.
색은 보통 출발 집단이나 집단 범주를 따른다. 화살표 모양 리본을 쓰지 않는다면 방향을 색만으로 추측하게 하지 않는다. 리본을 선택했을 때 ‘검색→검증 14, 검증→검색 6’처럼 양방향 값을 모두 표시한다. 원호 사이 여백은 구분을 위한 것이지 실제 거리나 단절이 아니다.
| 도표 요소 | 행렬 요소 | 뜻 |
|---|---|---|
| 원호 i | 행/열 i의 합 | 집단 총 연결량 |
| 리본 i–j | M[i][j], M[j][i] | 집단 쌍의 연결 |
| 리본 끝 너비 | 각 방향 값 | 연결량 |
| 화살촉 | 방향 표현 선택 | 출발→도착 |
| 원호 순서 | 정렬 설정 | 공간적 거리 아님 |
비대칭 행렬은 두 방향을 따로 보존한다
검색팀이 검증팀에 14건을 보내고 검증팀이 검색팀에 6건을 돌려보냈다면 연결 총량 20만 표시해서는 재작업 방향을 잃는다. 행렬의 M[검색][검증]=14와 M[검증][검색]=6을 따로 저장한다. 방향 리본, 두 색 끝, 화살표 또는 상세 표로 구분한다.
무방향 협업 건수를 그린다면 행렬을 대칭으로 만들되 같은 사건을 M[i][j]와 M[j][i]에 둘 다 넣어 총량을 두 배 세지 않도록 합계 정의를 밝힌다. directed와 undirected를 섞지 않는다. 원호 합계가 발신합인지 수신합인지, 둘의 합인지 캡션에 쓴다.
| 출발\도착 | 검색 | 생성 | 검증 | 사람 |
|---|---|---|---|---|
| 검색 | 3 | 18 | 14 | 5 |
| 생성 | 9 | 4 | 22 | 8 |
| 검증 | 6 | 11 | 2 | 16 |
| 사람 | 4 | 7 | 13 | 1 |
대각선의 자기연결도 의미를 정한다
M[i][i]는 같은 집단 안에서 다시 전달된 작업, 내부 재시도, 자기 참조를 나타낼 수 있다. 검색팀 대각선 3이 단순히 같은 팀 안의 담당자 변경인지 자동 재시도인지 정의해야 한다. 의미가 없는 대각선은 0으로 두고, 실제 자기연결은 루프 리본이나 원호 옆 값으로 표시한다.
자기연결이 매우 크면 다른 집단 사이 리본이 눌려 보인다. 내부 처리와 부서 간 이동을 별도 패널로 나누거나 필터를 제공하되 원래 총량은 표에 남긴다. 대각선을 조용히 삭제하면 원호 합계가 행렬 합과 달라진다. 제외 규칙과 제외량을 제목이나 주석에 쓴다.
집단 순서와 리본 정렬로 교차를 줄인다
원 둘레의 집단 순서는 데이터의 물리적 위치가 아니다. 관련 집단을 가깝게 두면 리본이 짧아지고 교차가 줄지만, 순서를 바꾸면 그림의 인상이 달라진다. 이름순, 업무 흐름순, 총량순 중 하나를 정해 기간별 비교에서 유지한다. 유리한 관계를 강조하려고 매번 재배열하지 않는다.
집단 안의 리본도 값순이나 대상순으로 정렬할 수 있다. 교차를 줄이는 알고리즘은 읽기 편의를 위한 선택이며 연결량을 바꾸지 않는다. 정렬 기준을 기록하고, 강조하려는 집단을 선택하면 다른 리본의 불투명도를 낮춘다. 색만으로 구분하지 않고 테두리와 직접 라벨을 함께 쓴다.
| 설정 | 바뀌는 것 | 바뀌지 않는 것 |
|---|---|---|
| 집단 순서 | 원호 위치·교차 | 행렬값 |
| 리본 정렬 | 겹침 순서 | 연결량 |
| 여백 | 시각적 구분 | 합계 |
| 강조 | 불투명도 | 원자료 |
| 기간 비교 | 고정 권장 | 척도·ID |
생키·네트워크·행렬과 질문이 다르다
생키는 단계 방향이 분명한 흐름과 분배를 왼쪽에서 오른쪽으로 보여 준다. 코드 다이어그램은 동일한 수준의 여러 집단이 서로 주고받는 양을 원 안에 압축한다. 네트워크 그래프는 연결 구조와 중심성을 보여 주지만 링크가 많으면 겹친다. 인접 행렬은 방향과 정확값을 촘촘하게 비교하는 데 유리하다.
집단이 20개를 넘고 거의 모든 쌍이 연결되면 코드의 리본이 머리카락처럼 겹친다. 이때 정렬한 행렬 히트맵이나 상위 연결 표가 낫다. 시간 순서가 핵심이면 코드 여러 장보다 애니메이션 없는 작은 다중 행렬을 쓴다. 원형 배치가 멋져 보인다는 이유로 관계 수를 감추지 않는다.
| 질문 | 우선 도표 | 이유 |
|---|---|---|
| 단계별 양 흐름 | 생키 | 방향·분배 |
| 집단 간 양 | 코드 | 쌍 연결 압축 |
| 연결 구조·중심성 | 네트워크 | 노드–링크 구조 |
| 많은 집단의 정확값 | 행렬 히트맵 | 셀 위치·색 |
| 시간 변화 | 작은 다중 행렬 | 위치 안정성 |
LLM에는 행렬의 행·열 순서를 고정해 준다
원자료를 출발ID, 도착ID, 값, 단위, 기간으로 제공하고 중복과 자기연결 규칙을 먼저 확인한다. 고정된 집단 목록으로 정사각 행렬을 만들고 행합·열합·전체합을 계산하게 한다. 방향이 있는지, 행이 출발인지, 원호 합계가 무엇인지 출력 사양에 적는다.
모델이 이름이 비슷한 집단을 합치거나 빈 셀을 추정하지 못하게 한다. 렌더링과 함께 원행렬, 상위 연결 표, 집단별 발신·수신 요약을 요구한다. 리본이 너무 많으면 상위 k개만 보여 주되 제외 합계를 별도 표시한다. 실제 로그가 없다면 임의 관계를 만들지 않고 빈 행렬 사양만 반환한다.
잘못된 코드는 방향과 총량을 숨긴다
수정 전 그림은 검색→검증 14와 검증→검색 6을 하나의 20짜리 리본으로 합치고 방향을 설명하지 않았다. 대각선을 삭제했지만 원호 합계는 삭제 전 값을 썼다. 집단별로 다른 너비 척도를 적용하고, 리본 교차를 줄이려고 행렬값 자체를 상위 5개만 남겼으나 제외량을 밝히지 않았다.
수정 후 비대칭 행렬을 그대로 보존하고 방향 리본과 상세 표를 제공했다. 대각선 포함 여부에 맞춰 원호 합계를 다시 계산했다. 모든 원호와 리본에 같은 양 척도를 썼고 제외된 작은 연결의 합계를 집단별로 표시했다. 집단 순서를 고정해 기간 비교가 가능하게 했다.
직접 실습은 한 행과 한 열을 함께 읽는다
교육용 행렬에서 검색 행의 합은 3+18+14+5=40으로 검색에서 나간 작업이다. 검색 열의 합은 3+9+6+4=22로 검색이 받은 작업이다. 둘을 합친 62를 원호 길이로 쓴다면 자기연결 3을 두 번 셀지 한 번 셀지 정의해야 한다. 실습에서는 한 셀을 바꾸며 행합과 열합의 변화를 확인한다.
실제 자료에서는 한 작업이 여러 팀을 순차로 거치면 집단 쌍 이동을 이벤트마다 세는지, 작업 하나당 한 번만 세는지 규칙을 정한다. 코드 다이어그램은 경로 순서를 보존하지 않으므로 검색→생성→검증의 순차 경로를 알고 싶다면 생키나 시퀀스 기록을 병행한다. 연결량과 경로는 다른 질문이다.
| 검사 | 검색 예시 | 뜻 |
|---|---|---|
| 행합 | 40 | 검색 발신 |
| 열합 | 22 | 검색 수신 |
| 대각선 | 3 | 검색 내부 |
| 방향쌍 | 14 대 6 | 검색↔검증 비대칭 |
| 전체합 | 모든 셀 합 | 집계 규칙 확인 |
복사해서 쓸 수 있는 LLM 요청문
아래 요청문은 교육용 예시다. 원문을 함께 제공하고, 모델이 빈칸을 추측하지 않도록 금지 조건을 넣었다. 결과를 받으면 원문 문장과 노드·선의 대응을 사람이 다시 확인한다.
다음 집단 간 이동 표를 코드 다이어그램용으로 검산해 줘. 1. 출발ID, 도착ID, 값, 단위, 기간을 확인한다. 2. 고정된 집단 순서로 정사각 행렬을 만들고 행은 출발, 열은 도착으로 둔다. 3. 행합, 열합, 전체합과 대각선 자기연결을 계산한다. 4. M[i][j]와 M[j][i]를 합치지 말고 방향별로 보존한다. 5. 원호 합계가 발신·수신·둘의 합 중 무엇인지 명시한다. 6. 집단·리본 정렬, 색 범례, 작은 연결 제외 기준과 제외량을 기록한다. 7. 원행렬과 상위 연결 표를 도표와 함께 제공한다. 8. 실제 관계가 없으면 빈 셀을 추정하거나 임의 연결을 만들지 않는다. [이동 표] …
직접 실습하고 결과를 읽기
이 실습은 브라우저 안에 준비한 교육용 자료만 사용한다. 외부 LLM을 호출하거나 실제 기관 자료를 조회하지 않는다. 입력을 바꾸어 결과가 어떻게 달라지는지 보고, 설명과 맞지 않는 결과가 나오면 어떤 정보가 빠졌는지 적어 본다.
자료와 출처
아래 자료는 이번 글의 정의와 표기법을 확인하는 데 사용했다. 생각그림과 사례 문장은 원자료를 복제하지 않고 이 글의 교육 목적에 맞게 새로 구성했다.