HAHS.
Back to Catalog

Semantic Zoom

interaction

Also known as: level-of-detail zoom, adaptive zoom, content-aware zoom

Enable explorationProvide detailShow distribution NumericalTemporalCategoricalGeographic

설명 / Description

시맨틱 줌은 동일한 마크를 단순히 기하학적으로 확대하는 대신, 사용자가 확대·축소할 때 시각적 표현 자체가 변화하는 줌 인터랙션입니다. 지도에서 국가 수준으로 축소하면 집계 통계가 표시된 색칠된 지역이 보이고, 도시 수준으로 확대하면 그 지역들이 자세한 레이블이 달린 개별 건물 윤곽으로 분해됩니다. 타임라인에서 10년 단위로 축소하면 연도별 막대가 보이고, 단일 연도로 확대하면 그 막대들이 월별 또는 일별 데이터 포인트로 분해됩니다.

Semantic zoom is a zoom interaction in which the visual representation itself changes as the user zooms in or out, rather than simply scaling the same marks geometrically. At a country-level zoom on a map, you might see colored regions with aggregate statistics; zoom to a city and those regions dissolve into individual building footprints with detailed labels. At a decade-level zoom on a timeline, you see yearly bars; zoom into a single year and those bars decompose into monthly or daily data points.

이 개념은 펄린(Perlin)과 폭스(Fox, 1993)가 Pad 연구에서 정보 시각화 문헌 안에 정식화했으며, 이후 Pad++(베더슨과 홀란, 1994)에서 다듬어졌습니다. 핵심 통찰은 기하학적 줌 — 표현 대상은 바꾸지 않고 마크만 키우는 방식 — 이 금세 수확 체감에 부딪힌다는 점입니다: 확대된 원은 여전히 원일 뿐입니다. 반면 시맨틱 줌은 줌 수준을 트리거로 삼아 표현 자체를 완전히 전환함으로써 각 스케일에 맞는 세부 정보를 드러냅니다. 구글 지도가 대표적인 예입니다: 대륙 스케일에서는 고속도로, 도시 스케일에서는 거리, 블록 스케일에서는 개별 건물이 보입니다.

The concept was formalized in the information visualization literature by Perlin and Fox (1993) in their work on Pad, and later refined in Pad++ (Bederson and Hollan, 1994). The key insight is that geometric zoom — making marks bigger without changing what they represent — hits diminishing returns quickly: a scaled-up circle is still just a circle. Semantic zoom, by contrast, uses the zoom level as a trigger to swap representations entirely, revealing more appropriate detail at each scale. Google Maps is the canonical example: highways at continent scale, streets at city scale, individual buildings at block scale.

데이터 시각화에서 시맨틱 줌은 계층적 데이터에 특히 강력합니다. 트리맵은 개요 줌에서는 최상위 카테고리를, 중간 줌에서는 하위 카테고리를, 깊은 줌에서는 레이블이 붙은 개별 항목을 보여줄 수 있습니다. 노드-링크 네트워크는 개요에서는 커뮤니티 수준의 군집을, 중간 줌에서는 차수 레이블이 붙은 개별 노드를, 깊은 줌에서는 전체 속성 패널을 보여줄 수 있습니다. 관건은 줌 수준 사이의 전환을 매끄럽게 설계하여 사용자가 공간적 방향 감각을 유지하고, 새 표현이 다른 데이터가 아니라 같은 데이터를 더 자세히 본 것임을 이해하게 하는 것입니다.

In data visualization, semantic zoom is particularly powerful for hierarchical data. A treemap might show top-level categories at overview zoom, subcategories at mid-zoom, and individual items with labels at deep zoom. A node-link network might show community-level clusters at overview, individual nodes with degree labels at mid-zoom, and full attribute panels at deep zoom. The challenge is designing smooth transitions between zoom levels so the user maintains spatial orientation and understands that the new representation is a more detailed view of the same data, not different data.

Semantic Zoom — try it yourself

언제 사용하나 / When to Use

  • 데이터셋이 서로 다른 스케일에서 의미 있는 여러 수준의 세부 정보나 집계에 걸쳐 있을 때.
  • When the dataset spans multiple levels of detail or aggregation that are meaningful at different scales.
  • 기하학적 줌이 추가 통찰 없이 빈 공간이나 지나치게 큰 마크를 만들어낼 때.
  • When geometric zoom would result in empty space or overly large marks without providing additional insight.
  • 지도 스케일에 따라 서로 다른 피처가 관련성을 갖는 지리적 시각화에서.
  • In geographic visualizations where different features are relevant at different map scales.
  • 계층적 데이터(트리맵, 조직도, 파일 시스템)에서 줌이 하위 수준을 드러내야 할 때.
  • In hierarchical data (treemaps, org charts, file systems) where zooming should reveal sub-levels.
  • 개요 상태에서는 레이블을 붙이거나 세부 정보를 담기에 항목이 너무 많지만, 확대했을 때는 레이블이 필수적일 때.
  • When the data has too many items to label or detail at overview but labels are essential at close-up.

이럴 땐 피하세요 / When NOT to Use

  • 단순한 기하학적 줌으로 충분할 때 — 데이터에 하나의 자연스러운 해상도가 있고 스케일링만으로 문제가 없을 때.
  • When a simple geometric zoom is sufficient — the data has one natural resolution and scaling works fine.
  • 데이터가 계층적이지 않거나 다중 해상도가 아닐 때 — 더 깊이 확대해도 드러날 것이 없습니다.
  • When the data is not hierarchical or multi-resolution — there is nothing more to reveal at deeper zoom.
  • 줌 수준 간 전환이 사용자를 혼란스럽게 하거나 방향 감각을 잃게 만들 때.
  • When the transitions between zoom levels would be confusing or disorienting to the user.
  • 구현 복잡도가 분석 과업에 비해 정당화되지 않을 때 — 시맨틱 줌은 줌 수준마다 여러 표현을 설계해야 합니다.
  • When implementation complexity is not justified by the analytical task — semantic zoom requires designing multiple representations per zoom level.
  • 성능 제약 때문에 줌 수준마다 다시 렌더링하는 것이 비현실적일 때.
  • When performance constraints make re-rendering at each zoom level impractical.

작동 방식 / How It Works

  • 사용자가 스크롤 휠, 핀치 줌, 또는 줌 컨트롤을 사용해 확대합니다.
  1. The user zooms in using scroll-wheel, pinch-to-zoom, or zoom controls.
  • 시스템이 현재 줌 수준을 계산하여 미리 정의된 줌 임계값 집합에 대응시킵니다.
  1. The system computes the current zoom level and maps it to a set of predefined zoom thresholds.
  • 임계값을 넘으면 표현이 바뀝니다: 집계된 마크가 개별 항목으로 분해되고, 레이블이 나타나거나 사라지고, 차트 유형이 변형되고, 새 데이터를 가져올 수 있습니다.
  1. When a threshold is crossed, the representation changes: aggregated marks may decompose into individual items, labels may appear or disappear, chart types may transform, and new data may be fetched.
  • 애니메이션 전환이 이전 표현을 새 표현으로 변형시키며, 공간적 연속성을 유지해 사용자가 수준 간의 관계를 이해하게 합니다.
  1. An animated transition morphs the old representation into the new one, preserving spatial continuity so the user understands the relationship between levels.
  • 사용자는 계속 더 깊이 확대하거나 다시 축소할 수 있으며, 각 임계값을 지날 때마다 적절한 표현 전환이 일어납니다.
  1. The user can continue zooming deeper or zoom back out, with each threshold triggering the appropriate representation swap.
  • 가장 깊은 줌 수준에서는 전체 세부 정보(개별 항목, 모든 레이블, 완전한 툴팁)가 표시됩니다. 가장 바깥 수준에서는 개요가 요약이나 집계를 보여줍니다.
  1. At the deepest zoom level, full detail is shown (individual items, all labels, complete tooltips). At the outermost level, the overview shows summaries or aggregates.

변형 / Variations

  • 이산 시맨틱 줌: 표현이 고정된 개수의 수준 사이를 전환합니다(예: 지도에서 국가 → 주 → 카운티). 각 수준은 완전히 설계된 뷰를 가집니다.
  • Discrete semantic zoom: The representation snaps between a fixed number of levels (e.g., country → state → county on a map). Each level has a fully designed view.
  • 연속 시맨틱 줌: 레이블 크기, 마크 세부 정도, 데이터 해상도 같은 속성이 이산적인 전환 없이 줌 수준의 함수로 매끄럽게 변합니다.
  • Continuous semantic zoom: Properties like label size, mark detail, and data resolution change smoothly as a function of zoom level, without discrete snaps.
  • 데이터 기반 시맨틱 줌: 줌 수준이 새로운 데이터 요청을 트리거합니다 — 타일 서버가 사용자가 확대할수록 점점 더 자세한 데이터를 제공합니다.
  • Data-driven semantic zoom: The zoom level triggers new data fetches — a tile server delivers progressively more detailed data as the user zooms in.
  • 군집-개별 전환: 개요에서는 데이터 포인트가 집계 마크로 군집화되고, 확대하면 군집이 개별 점으로 분해됩니다. 지도 기반 시각화에서 흔합니다.
  • Cluster-to-individual: At overview, data points are clustered into aggregate marks; zooming decomposes clusters into individual points. Common in map-based visualizations.
  • 텍스트 노출 시맨틱 줌: 개요에서는 형태/색상만 보이고, 확대하면 레이블이 추가되고, 그다음 주석이, 그다음 전체 메타데이터 패널이 나타납니다.
  • Text-reveal semantic zoom: At overview only shapes/colors are visible; zooming adds labels, then annotations, then full metadata panels.
  • 차트 유형 변형: 차트 유형 자체가 바뀝니다 — 개요에서의 파이 차트가 중간 줌에서는 누적 막대로, 깊은 줌에서는 개별 막대로 변형됩니다.
  • Chart-type morphing: The chart type itself changes — a pie chart at overview morphs into a stacked bar at mid-zoom and individual bars at deep zoom.

코드 레퍼런스 / Code Reference

// Semantic zoom with D3: switch between aggregated and individual marks
const zoom = d3.zoom()
  .scaleExtent([1, 50])
  .on("zoom", ({ transform }) => {
    const k = transform.k;
    if (k < 5) {
      // Overview: show cluster centroids
      clusters.style("display", "block");
      individuals.style("display", "none");
      clusters.attr("transform", transform);
    } else {
      // Detail: show individual points with labels
      clusters.style("display", "none");
      individuals.style("display", "block");
      individuals.attr("transform", transform);
      individuals.selectAll("text")
        .style("font-size", `${12 / k}px`);
    }
  });

svg.call(zoom);