Graflume · Alpha

Annotation · 극단 환경 적용

시계열의 중요한 사건과 설명을 데이터 좌표에 직접 표시합니다. 기기 이름을 추측하지 않고 컨테이너 크기, 입력 방식, 표시 능력과 사용자 선호를 조합합니다. 모바일·워치·전자종이·흑백·도트 화면과 표준 기반 극단 환경을 같은 차트에서 비교하세요.

차트 계열 · 기본 차트 계열

Annotation

시계열의 중요한 사건과 설명을 데이터 좌표에 직접 표시합니다.

Quick API
annotation()
브라우저 스냅샷
graflume
mark
annotation
프리셋
3

극단 환경

디바이스·입력·표시 능력에 맞춘 재구성

기기 이름을 추측하지 않고 컨테이너 크기, 입력 방식, 표시 능력과 사용자 선호를 조합합니다. 모바일·워치·전자종이·흑백·도트 화면과 표준 기반 극단 환경을 같은 차트에서 비교하세요.

반응형 화면

컨테이너 폭과 높이에 따라 축, 범례, 설명과 조작부를 자동 재배치합니다.

960×540 · adaptive.profiles=responsive-fluid
  • zoom-reflow
  • shape-rectangle
  • display-color
  • input-fine
  • motion-full
  • renderer-canvas-spatial

극단 환경 미리보기

위 프로필 탭을 선택하면 같은 데이터와 ChartSpec을 유지한 채 화면 크기, 입력 방식, 표시 능력과 사용자 선호에 맞춰 차트를 다시 구성합니다.

상태불러오는 중

  • adaptive
  • capability-driven
  • no-user-agent-branching
  • 범례: legend · layers · one series
  • 포인트·범위 하이라이트: highlights[] · datum · date
  • 설명 말풍선: annotations[] · datum · date · callout · placement:auto
  • 대화형 선택: selection · multiple · toggle
Graflume.annotation() Canvas 2D
조작 도움말

확대·이동은 화면을 살펴보기 위한 기능이며 데이터 축이나 값은 바꾸지 않습니다. 재생 조작이 보이는 차트에서는 원본 데이터에서 고유값이 처음 등장한 순서대로 실제 단계만 이동합니다.

Tab으로 조작부를 이동하고 Enter 또는 Space로 실행하세요. 차트에 초점이 있을 때 더하기·빼기 키로 확대·축소하고 화살표 키로 이동할 수 있습니다.

자동 배치는 둘레 후보를 비교해 차트·범례·다른 말풍선과의 겹침을 가능한 한 피합니다. 명시한 위치는 필요한 안전 보정만 적용해 유지합니다. 말풍선 글자는 상자 안에서 안전하게 자동 줄바꿈됩니다. 끊어지지 않는 긴 토큰은 정해진 줄 수 안에서 시각적으로 축약하지만, 보조 기술에는 원문 전체를 유지합니다.

재생은 안정 키가 같은 요소를 600ms ease-in-out으로 부드럽게 보간합니다. 새로 나타나거나 사라지는 표식은 페이드하고, 형태가 호환되지 않으면 교차 페이드하며, 동작 줄이기 환경에서는 즉시 최종 상태를 표시합니다.

playback · cumulative · date · key=date · transition=600ms/ease-in-out · fade/crossfade

불러오는 중

브라우저 API · 이식 가능한 스키마

브라우저 API

Graflume.annotation()

const data = [
  {
    "annotation": null,
    "date": "2026-01-01",
    "value": 48
  },
  {
    "annotation": null,
    "date": "2026-02-01",
    "value": 53
  },
  {
    "annotation": "Spring release",
    "date": "2026-03-01",
    "value": 51
  },
  {
    "annotation": null,
    "date": "2026-04-01",
    "value": 59
  },
  {
    "annotation": null,
    "date": "2026-05-01",
    "value": 66
  },
  {
    "annotation": null,
    "date": "2026-06-01",
    "value": 70
  },
  {
    "annotation": null,
    "date": "2026-07-01",
    "value": 76
  },
  {
    "annotation": null,
    "date": "2026-08-01",
    "value": 82
  },
  {
    "annotation": "Team plan launch",
    "date": "2026-09-01",
    "value": 80
  },
  {
    "annotation": null,
    "date": "2026-10-01",
    "value": 89
  },
  {
    "annotation": null,
    "date": "2026-11-01",
    "value": 96
  },
  {
    "annotation": null,
    "date": "2026-12-01",
    "value": 104
  }
];

const options = {
  "accessibility": {
    "description": "Monthly active teams with the releases that changed adoption. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
    "label": "Annotation chart: Monthly active teams with the releases that changed adoption"
  },
  "annotations": [
    {
      "connector": {
        "visible": true
      },
      "detail": "데이터, 축 범위 또는 화면 위치에 사용자가 작성한 안전한 텍스트 설명을 연결합니다.",
      "id": "manual-callout",
      "placement": "auto",
      "style": {
        "maxWidth": 220,
        "padding": 8
      },
      "target": {
        "field": "date",
        "type": "datum",
        "value": "2026-07-01"
      },
      "text": "포인트·범위 하이라이트 · 2026-07-01"
    }
  ],
  "axes": {
    "x": {
      "format": {
        "dateStyle": "medium",
        "timeZone": "UTC",
        "type": "date"
      },
      "labels": {
        "orientation": "horizontal"
      },
      "position": "bottom",
      "ticks": {
        "count": 4,
        "spacing": 8
      }
    },
    "y": {
      "format": {
        "type": "integer"
      }
    }
  },
  "create": {
    "adaptive": {
      "profiles": "auto"
    }
  },
  "height": 620,
  "highlights": [
    {
      "id": "manual-focus",
      "padding": 7,
      "target": {
        "field": "date",
        "type": "datum",
        "value": "2026-07-01"
      }
    }
  ],
  "interaction": {
    "controls": {
      "annotations": true,
      "export": true,
      "fullscreen": true,
      "labels": {
        "controls": "차트 조작",
        "enterFullscreen": "전체 화면 열기",
        "exitFullscreen": "전체 화면 닫기",
        "exportPng": "PNG 다운로드",
        "hideAnnotations": "설명 말풍선 숨기기",
        "loop": "반복 재생",
        "nextFrame": "다음 프레임",
        "pause": "일시 정지",
        "play": "재생",
        "previousFrame": "이전 프레임",
        "reset": "보기 초기화",
        "seek": "재생 위치",
        "showAnnotations": "설명 말풍선 표시",
        "speed": "재생 속도",
        "zoomIn": "확대",
        "zoomOut": "축소"
      },
      "playback": true,
      "reset": true,
      "zoom": true
    },
    "hover": true,
    "navigation": {
      "drag": true,
      "keyboard": true,
      "maxZoom": 6,
      "minZoom": 1,
      "pinch": true,
      "wheel": "modifier"
    },
    "playback": {
      "autoplay": false,
      "field": "date",
      "filter": true,
      "interval": 1000,
      "key": "date",
      "loop": false,
      "mode": "cumulative",
      "rate": 1,
      "transition": {
        "duration": 600,
        "easing": "ease-in-out"
      },
      "windowSize": 1
    },
    "selection": {
      "ariaLabel": "대화형 선택",
      "clearOnBackground": true,
      "clearOnEscape": true,
      "highlight": {
        "padding": 5
      },
      "key": "date",
      "mode": "multiple",
      "toggle": true
    },
    "tooltip": {
      "axis": "x",
      "fields": [
        {
          "dateStyle": "long",
          "field": "date",
          "format": "date",
          "label": "날짜",
          "timeZone": "UTC"
        },
        {
          "field": "value",
          "format": "number",
          "label": "값"
        },
        {
          "field": "annotation",
          "format": "auto",
          "label": "설명"
        }
      ],
      "title": "Annotation",
      "trigger": "axis"
    }
  },
  "legend": {
    "interactive": true,
    "items": [
      {
        "id": "series",
        "label": "Annotation",
        "layerId": "layer-0"
      }
    ],
    "labels": {
      "hide": "숨기기",
      "show": "표시"
    },
    "maxItems": 8,
    "mode": "layers",
    "orientation": "horizontal",
    "position": "bottom",
    "title": "Annotation",
    "visible": true
  },
  "locale": "ko",
  "mark": {
    "fields": {
      "annotation": "annotation"
    },
    "point": true
  },
  "padding": {
    "top": 52
  },
  "theme": "graflume-light",
  "title": {
    "subtitle": "Monthly active teams with the releases that changed adoption",
    "text": "Annotation chart"
  },
  "width": "container",
  "x": {
    "field": "date",
    "scale": {
      "domain": [
        "2026-01-01",
        "2026-04-01"
      ]
    },
    "title": "Month",
    "type": "temporal"
  },
  "y": {
    "field": "value",
    "scale": {
      "domain": [
        0,
        48
      ]
    },
    "title": "Active teams",
    "type": "quantitative"
  }
};

Graflume.annotation('#chart', data, options);

이식 가능한 스키마

ChartSpec 0.1 · options

{
  "accessibility": {
    "description": "Monthly active teams with the releases that changed adoption. The example uses curated, deterministic data and exposes its exact values in a semantic table.",
    "label": "Annotation chart: Monthly active teams with the releases that changed adoption"
  },
  "annotations": [
    {
      "connector": {
        "visible": true
      },
      "detail": "데이터, 축 범위 또는 화면 위치에 사용자가 작성한 안전한 텍스트 설명을 연결합니다.",
      "id": "manual-callout",
      "placement": "auto",
      "style": {
        "maxWidth": 220,
        "padding": 8
      },
      "target": {
        "field": "date",
        "type": "datum",
        "value": "2026-07-01"
      },
      "text": "포인트·범위 하이라이트 · 2026-07-01"
    }
  ],
  "axes": {
    "x": {
      "format": {
        "dateStyle": "medium",
        "timeZone": "UTC",
        "type": "date"
      },
      "labels": {
        "orientation": "horizontal"
      },
      "position": "bottom",
      "ticks": {
        "count": 4,
        "spacing": 8
      }
    },
    "y": {
      "format": {
        "type": "integer"
      }
    }
  },
  "create": {
    "adaptive": {
      "profiles": "auto"
    }
  },
  "height": 620,
  "highlights": [
    {
      "id": "manual-focus",
      "padding": 7,
      "target": {
        "field": "date",
        "type": "datum",
        "value": "2026-07-01"
      }
    }
  ],
  "interaction": {
    "controls": {
      "annotations": true,
      "export": true,
      "fullscreen": true,
      "labels": {
        "controls": "차트 조작",
        "enterFullscreen": "전체 화면 열기",
        "exitFullscreen": "전체 화면 닫기",
        "exportPng": "PNG 다운로드",
        "hideAnnotations": "설명 말풍선 숨기기",
        "loop": "반복 재생",
        "nextFrame": "다음 프레임",
        "pause": "일시 정지",
        "play": "재생",
        "previousFrame": "이전 프레임",
        "reset": "보기 초기화",
        "seek": "재생 위치",
        "showAnnotations": "설명 말풍선 표시",
        "speed": "재생 속도",
        "zoomIn": "확대",
        "zoomOut": "축소"
      },
      "playback": true,
      "reset": true,
      "zoom": true
    },
    "hover": true,
    "navigation": {
      "drag": true,
      "keyboard": true,
      "maxZoom": 6,
      "minZoom": 1,
      "pinch": true,
      "wheel": "modifier"
    },
    "playback": {
      "autoplay": false,
      "field": "date",
      "filter": true,
      "interval": 1000,
      "key": "date",
      "loop": false,
      "mode": "cumulative",
      "rate": 1,
      "transition": {
        "duration": 600,
        "easing": "ease-in-out"
      },
      "windowSize": 1
    },
    "selection": {
      "ariaLabel": "대화형 선택",
      "clearOnBackground": true,
      "clearOnEscape": true,
      "highlight": {
        "padding": 5
      },
      "key": "date",
      "mode": "multiple",
      "toggle": true
    },
    "tooltip": {
      "axis": "x",
      "fields": [
        {
          "dateStyle": "long",
          "field": "date",
          "format": "date",
          "label": "날짜",
          "timeZone": "UTC"
        },
        {
          "field": "value",
          "format": "number",
          "label": "값"
        },
        {
          "field": "annotation",
          "format": "auto",
          "label": "설명"
        }
      ],
      "title": "Annotation",
      "trigger": "axis"
    }
  },
  "legend": {
    "interactive": true,
    "items": [
      {
        "id": "series",
        "label": "Annotation",
        "layerId": "layer-0"
      }
    ],
    "labels": {
      "hide": "숨기기",
      "show": "표시"
    },
    "maxItems": 8,
    "mode": "layers",
    "orientation": "horizontal",
    "position": "bottom",
    "title": "Annotation",
    "visible": true
  },
  "locale": "ko",
  "mark": {
    "fields": {
      "annotation": "annotation"
    },
    "point": true
  },
  "padding": {
    "top": 52
  },
  "theme": "graflume-light",
  "title": {
    "subtitle": "Monthly active teams with the releases that changed adoption",
    "text": "Annotation chart"
  },
  "width": "container",
  "x": {
    "field": "date",
    "scale": {
      "domain": [
        "2026-01-01",
        "2026-04-01"
      ]
    },
    "title": "Month",
    "type": "temporal"
  },
  "y": {
    "field": "value",
    "scale": {
      "domain": [
        0,
        48
      ]
    },
    "title": "Active teams",
    "type": "quantitative"
  }
}