k(종류)와 refs(원본 링크)는 처음부터 있던 필드입니다. date·topic·parent·floor·source 5개는 6개 축을 계산하려고 이번에 추가했습니다. 값이 없으면 반드시 null로 두고, 그 노드는 해당 축에서 '미분류' 무리로 뺍니다 — 없는 값을 추측해서 채우지 않습니다.
축 6개 설계
노드마다 축이 계산한 목표 좌표를 정하고, 매 프레임 그 목표로 살짝 당기는 힘만 추가했습니다. 이렇게 하면 원래 있던 밀어내기·당기기 힘 위에 축이 얹히는 구조라, 축을 바꿔도 화면을 다시 그리는 게 아니라 점들이 새 자리로 스스로 이동하는 것처럼 보입니다.
🏷️👁️
라벨 겹침을 이렇게 다뤘습니다
노드가 늘수록 이름표가 서로 겹쳐 읽을 수 없게 됩니다. 줌을 충분히 당겼을 때, 또는 클릭해서 선택했을 때만 이름을 보여주던 규칙에, '이어진 선이 4개 이상인 노드는 줌과 상관없이 항상 이름을 보여준다'는 규칙을 더했습니다. 축이 생기면 노드가 규칙적으로 놓여서 자연히 덜 겹치지만, 그것만으로는 부족해서 이 규칙을 추가했습니다.
되돌린 것 — 실패를 숨기지 않습니다
⚠️🔄
홈에 직접 얹었더니 사이트 전체가 깨졌습니다
그래프 페이지의 body 규칙(전체화면 검정 배경, margin 0)이 홈 페이지 전체의 body 규칙을 덮어써 버렸습니다. 두 페이지를 같은 문서 안에 합칠 수 없다고 판단해, 그래프를 독립된 iframe으로 감싸는 방식으로 되돌렸습니다. 이번엔 그 iframe이 부모 크기를 못 따라가는 새 문제가 생겨서, 그건 ResizeObserver로 따로 고쳤습니다.
🚧📊
아직 안 된 것 — 실측 그대로 적습니다
이 문서가 처음 쓰였을 땐 date·topic·parent 세 필드가 다 비어 축 3개가 안 돈다고 했습니다. 2026-09-05에 다시 실제로 재보니: date는 67개 중 60개, topic은 25개, source는 67개, floor는 67개가 이미 채워져 있었습니다. 정말 거의 빈 건 parent 하나뿐입니다(67개 중 1개) — 그래서 지식축(트리 배치)만 지금은 노드 대부분이 '미분류' 무리로 뭉쳐 보입니다. 나머지 축은 이미 돌아갑니다.
한 줄로:
이 기록은 왜 그 데이터 필드를 골랐는지, 홈 인라인 시도를 왜 되돌렸는지, 지금 축 중 무엇이 아직 안 도는지를 숨기지 않고 남긴 구현 기록입니다.
출처: urbanplan-ai/site/graph.html 실제 구현 · docs/김조교_1억/36_지식그래프_다축_정본.md §8 · data/knowledge.json 실측(2026-09-05)