Graflume · Alpha

Carpet · 기본 구현 · 공통 기능

논리 좌표 격자를 제공된 물리 좌표로 휘게 만들고 점이나 등고선을 같은 표면에 겹칩니다. 필수 데이터와 차트 고유 인코딩만 사용한 출발점입니다. 아래 코드를 펼치면 그대로 실행할 수 있습니다. 기능 탭을 선택해 헤더, 도구 설명, 테마, 범례, 강조, 말풍선, 선택, 화면 제어와 접근성을 하나씩 적용한 결과와 코드를 비교하세요.

차트 계열 · 고급 차트 계열

Carpet

논리 좌표 격자를 제공된 물리 좌표로 휘게 만들고 점이나 등고선을 같은 표면에 겹칩니다.

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

기본 구현

가장 단순한 차트

필수 데이터와 차트 고유 인코딩만 사용한 출발점입니다. 아래 코드를 펼치면 그대로 실행할 수 있습니다.

기본 예제

논리 좌표 격자를 제공된 물리 좌표로 휘게 만들고 점이나 등고선을 같은 표면에 겹칩니다.

상태불러오는 중

  • minimal-implementation
Graflume.carpet() Canvas 2D
조작 도움말

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

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

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

불러오는 중

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

브라우저 API

Graflume.carpet()

const data = [
  {
    "a": 0,
    "b": 0,
    "px": 0,
    "py": 0,
    "value": 18.454
  },
  {
    "a": 1,
    "b": 0,
    "px": 1,
    "py": 0.161,
    "value": 25.566
  },
  {
    "a": 2,
    "b": 0,
    "px": 2,
    "py": 0.279,
    "value": 33.429
  },
  {
    "a": 3,
    "b": 0,
    "px": 3,
    "py": 0.333,
    "value": 37.437
  },
  {
    "a": 4,
    "b": 0,
    "px": 4,
    "py": 0.334,
    "value": 34.696
  },
  {
    "a": 5,
    "b": 0,
    "px": 5,
    "py": 0.317,
    "value": 27.231
  },
  {
    "a": 6,
    "b": 0,
    "px": 6,
    "py": 0.33,
    "value": 19.709
  },
  {
    "a": 7,
    "b": 0,
    "px": 7,
    "py": 0.402,
    "value": 14.966
  },
  {
    "a": 8,
    "b": 0,
    "px": 8,
    "py": 0.535,
    "value": 12.882
  },
  {
    "a": 0,
    "b": 1,
    "px": 0.237,
    "py": 1,
    "value": 23.107
  },
  {
    "a": 1,
    "b": 1,
    "px": 1.237,
    "py": 1.161,
    "value": 35.347
  },
  {
    "a": 2,
    "b": 1,
    "px": 2.237,
    "py": 1.279,
    "value": 48.878
  },
  {
    "a": 3,
    "b": 1,
    "px": 3.237,
    "py": 1.333,
    "value": 55.784
  },
  {
    "a": 4,
    "b": 1,
    "px": 4.237,
    "py": 1.334,
    "value": 51.103
  },
  {
    "a": 5,
    "b": 1,
    "px": 5.237,
    "py": 1.317,
    "value": 38.364
  },
  {
    "a": 6,
    "b": 1,
    "px": 6.237,
    "py": 1.33,
    "value": 25.59
  },
  {
    "a": 7,
    "b": 1,
    "px": 7.237,
    "py": 1.402,
    "value": 17.544
  },
  {
    "a": 8,
    "b": 1,
    "px": 8.237,
    "py": 1.535,
    "value": 13.904
  },
  {
    "a": 0,
    "b": 2,
    "px": 0.44,
    "py": 2,
    "value": 26.364
  },
  {
    "a": 1,
    "b": 2,
    "px": 1.44,
    "py": 2.161,
    "value": 42.193
  },
  {
    "a": 2,
    "b": 2,
    "px": 2.44,
    "py": 2.279,
    "value": 59.698
  },
  {
    "a": 3,
    "b": 2,
    "px": 3.44,
    "py": 2.333,
    "value": 68.668
  },
  {
    "a": 4,
    "b": 2,
    "px": 4.44,
    "py": 2.334,
    "value": 62.805
  },
  {
    "a": 5,
    "b": 2,
    "px": 5.44,
    "py": 2.317,
    "value": 46.879
  },
  {
    "a": 6,
    "b": 2,
    "px": 6.44,
    "py": 2.33,
    "value": 31.246
  },
  {
    "a": 7,
    "b": 2,
    "px": 7.44,
    "py": 2.402,
    "value": 21.451
  },
  {
    "a": 8,
    "b": 2,
    "px": 8.44,
    "py": 2.535,
    "value": 16.459
  },
  {
    "a": 0,
    "b": 3,
    "px": 0.594,
    "py": 3,
    "value": 25.96
  },
  {
    "a": 1,
    "b": 3,
    "px": 1.594,
    "py": 3.161,
    "value": 41.344
  },
  {
    "a": 2,
    "b": 3,
    "px": 2.594,
    "py": 3.279,
    "value": 58.373
  },
  {
    "a": 3,
    "b": 3,
    "px": 3.594,
    "py": 3.333,
    "value": 67.222
  },
  {
    "a": 4,
    "b": 3,
    "px": 4.594,
    "py": 3.334,
    "value": 62.151
  },
  {
    "a": 5,
    "b": 3,
    "px": 5.594,
    "py": 3.317,
    "value": 48.474
  },
  {
    "a": 6,
    "b": 3,
    "px": 6.594,
    "py": 3.33,
    "value": 36.19
  },
  {
    "a": 7,
    "b": 3,
    "px": 7.594,
    "py": 3.402,
    "value": 28.674
  },
  {
    "a": 8,
    "b": 3,
    "px": 8.594,
    "py": 3.535,
    "value": 22.887
  },
  {
    "a": 0,
    "b": 4,
    "px": 0.715,
    "py": 4,
    "value": 22.195
  },
  {
    "a": 1,
    "b": 4,
    "px": 1.715,
    "py": 4.161,
    "value": 33.433
  },
  {
    "a": 2,
    "b": 4,
    "px": 2.715,
    "py": 4.279,
    "value": 45.905
  },
  {
    "a": 3,
    "b": 4,
    "px": 3.715,
    "py": 4.333,
    "value": 52.641
  },
  {
    "a": 4,
    "b": 4,
    "px": 4.715,
    "py": 4.334,
    "value": 50.238
  },
  {
    "a": 5,
    "b": 4,
    "px": 5.715,
    "py": 4.317,
    "value": 43.99
  },
  {
    "a": 6,
    "b": 4,
    "px": 6.715,
    "py": 4.33,
    "value": 41.06
  },
  {
    "a": 7,
    "b": 4,
    "px": 7.715,
    "py": 4.402,
    "value": 39.729
  },
  {
    "a": 8,
    "b": 4,
    "px": 8.715,
    "py": 4.535,
    "value": 33.562
  },
  {
    "a": 0,
    "b": 5,
    "px": 0.839,
    "py": 5,
    "value": 17.595
  },
  {
    "a": 1,
    "b": 5,
    "px": 1.839,
    "py": 5.161,
    "value": 23.767
  },
  {
    "a": 2,
    "b": 5,
    "px": 2.839,
    "py": 5.279,
    "value": 30.658
  },
  {
    "a": 3,
    "b": 5,
    "px": 3.839,
    "py": 5.333,
    "value": 34.711
  },
  {
    "a": 4,
    "b": 5,
    "px": 4.839,
    "py": 5.334,
    "value": 35.092
  },
  {
    "a": 5,
    "b": 5,
    "px": 5.839,
    "py": 5.317,
    "value": 36.552
  },
  {
    "a": 6,
    "b": 5,
    "px": 6.839,
    "py": 5.33,
    "value": 42.841
  },
  {
    "a": 7,
    "b": 5,
    "px": 7.839,
    "py": 5.402,
    "value": 47.546
  },
  {
    "a": 8,
    "b": 5,
    "px": 8.839,
    "py": 5.535,
    "value": 41.624
  },
  {
    "a": 0,
    "b": 6,
    "px": 1,
    "py": 6,
    "value": 14.308
  },
  {
    "a": 1,
    "b": 6,
    "px": 2,
    "py": 6.161,
    "value": 16.856
  },
  {
    "a": 2,
    "b": 6,
    "px": 3,
    "py": 6.279,
    "value": 19.736
  },
  {
    "a": 3,
    "b": 6,
    "px": 4,
    "py": 6.333,
    "value": 21.699
  },
  {
    "a": 4,
    "b": 6,
    "px": 5,
    "py": 6.334,
    "value": 23.244
  },
  {
    "a": 5,
    "b": 6,
    "px": 6,
    "py": 6.317,
    "value": 27.839
  },
  {
    "a": 6,
    "b": 6,
    "px": 7,
    "py": 6.33,
    "value": 36.881
  },
  {
    "a": 7,
    "b": 6,
    "px": 8,
    "py": 6.402,
    "value": 43.259
  },
  {
    "a": 8,
    "b": 6,
    "px": 9,
    "py": 6.535,
    "value": 38.745
  }
];

const options = {
  "axes": {
    "x": false,
    "y": false
  },
  "height": 620,
  "locale": "ko",
  "mark": {
    "fields": {
      "value": "value",
      "x": "px",
      "y": "py"
    },
    "options": {
      "levels": 4,
      "mode": "grid"
    }
  },
  "width": "container",
  "x": {
    "field": "a",
    "title": "Carpet axis A",
    "type": "quantitative"
  },
  "y": {
    "field": "b",
    "title": "Carpet axis B",
    "type": "quantitative"
  }
};

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

이식 가능한 스키마

ChartSpec 0.1 · options

{
  "axes": {
    "x": false,
    "y": false
  },
  "height": 620,
  "locale": "ko",
  "mark": {
    "fields": {
      "value": "value",
      "x": "px",
      "y": "py"
    },
    "options": {
      "levels": 4,
      "mode": "grid"
    }
  },
  "width": "container",
  "x": {
    "field": "a",
    "title": "Carpet axis A",
    "type": "quantitative"
  },
  "y": {
    "field": "b",
    "title": "Carpet axis B",
    "type": "quantitative"
  }
}

공통 기능

모든 차트에서 사용하는 기능

기능 탭을 선택해 헤더, 도구 설명, 테마, 범례, 강조, 말풍선, 선택, 화면 제어와 접근성을 하나씩 적용한 결과와 코드를 비교하세요. 데이터 표식 위에 마우스를 올리세요. 지원하는 차트에서는 축을 따라 커서를 움직이면 가장 가까운 값을 볼 수 있습니다. 모든 정확한 값은 아래 표에서 확인할 수 있습니다.

헤더

차트 안에 제목과 보조 설명을 넣어 무엇을 보여주는지 먼저 밝힙니다.

상태불러오는 중

  • header
Graflume.carpet() Canvas 2D
조작 도움말

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

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

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

불러오는 중

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

브라우저 API

Graflume.carpet()

const data = [
  {
    "a": 0,
    "b": 0,
    "px": 0,
    "py": 0,
    "value": 18.454
  },
  {
    "a": 1,
    "b": 0,
    "px": 1,
    "py": 0.161,
    "value": 25.566
  },
  {
    "a": 2,
    "b": 0,
    "px": 2,
    "py": 0.279,
    "value": 33.429
  },
  {
    "a": 3,
    "b": 0,
    "px": 3,
    "py": 0.333,
    "value": 37.437
  },
  {
    "a": 4,
    "b": 0,
    "px": 4,
    "py": 0.334,
    "value": 34.696
  },
  {
    "a": 5,
    "b": 0,
    "px": 5,
    "py": 0.317,
    "value": 27.231
  },
  {
    "a": 6,
    "b": 0,
    "px": 6,
    "py": 0.33,
    "value": 19.709
  },
  {
    "a": 7,
    "b": 0,
    "px": 7,
    "py": 0.402,
    "value": 14.966
  },
  {
    "a": 8,
    "b": 0,
    "px": 8,
    "py": 0.535,
    "value": 12.882
  },
  {
    "a": 0,
    "b": 1,
    "px": 0.237,
    "py": 1,
    "value": 23.107
  },
  {
    "a": 1,
    "b": 1,
    "px": 1.237,
    "py": 1.161,
    "value": 35.347
  },
  {
    "a": 2,
    "b": 1,
    "px": 2.237,
    "py": 1.279,
    "value": 48.878
  },
  {
    "a": 3,
    "b": 1,
    "px": 3.237,
    "py": 1.333,
    "value": 55.784
  },
  {
    "a": 4,
    "b": 1,
    "px": 4.237,
    "py": 1.334,
    "value": 51.103
  },
  {
    "a": 5,
    "b": 1,
    "px": 5.237,
    "py": 1.317,
    "value": 38.364
  },
  {
    "a": 6,
    "b": 1,
    "px": 6.237,
    "py": 1.33,
    "value": 25.59
  },
  {
    "a": 7,
    "b": 1,
    "px": 7.237,
    "py": 1.402,
    "value": 17.544
  },
  {
    "a": 8,
    "b": 1,
    "px": 8.237,
    "py": 1.535,
    "value": 13.904
  },
  {
    "a": 0,
    "b": 2,
    "px": 0.44,
    "py": 2,
    "value": 26.364
  },
  {
    "a": 1,
    "b": 2,
    "px": 1.44,
    "py": 2.161,
    "value": 42.193
  },
  {
    "a": 2,
    "b": 2,
    "px": 2.44,
    "py": 2.279,
    "value": 59.698
  },
  {
    "a": 3,
    "b": 2,
    "px": 3.44,
    "py": 2.333,
    "value": 68.668
  },
  {
    "a": 4,
    "b": 2,
    "px": 4.44,
    "py": 2.334,
    "value": 62.805
  },
  {
    "a": 5,
    "b": 2,
    "px": 5.44,
    "py": 2.317,
    "value": 46.879
  },
  {
    "a": 6,
    "b": 2,
    "px": 6.44,
    "py": 2.33,
    "value": 31.246
  },
  {
    "a": 7,
    "b": 2,
    "px": 7.44,
    "py": 2.402,
    "value": 21.451
  },
  {
    "a": 8,
    "b": 2,
    "px": 8.44,
    "py": 2.535,
    "value": 16.459
  },
  {
    "a": 0,
    "b": 3,
    "px": 0.594,
    "py": 3,
    "value": 25.96
  },
  {
    "a": 1,
    "b": 3,
    "px": 1.594,
    "py": 3.161,
    "value": 41.344
  },
  {
    "a": 2,
    "b": 3,
    "px": 2.594,
    "py": 3.279,
    "value": 58.373
  },
  {
    "a": 3,
    "b": 3,
    "px": 3.594,
    "py": 3.333,
    "value": 67.222
  },
  {
    "a": 4,
    "b": 3,
    "px": 4.594,
    "py": 3.334,
    "value": 62.151
  },
  {
    "a": 5,
    "b": 3,
    "px": 5.594,
    "py": 3.317,
    "value": 48.474
  },
  {
    "a": 6,
    "b": 3,
    "px": 6.594,
    "py": 3.33,
    "value": 36.19
  },
  {
    "a": 7,
    "b": 3,
    "px": 7.594,
    "py": 3.402,
    "value": 28.674
  },
  {
    "a": 8,
    "b": 3,
    "px": 8.594,
    "py": 3.535,
    "value": 22.887
  },
  {
    "a": 0,
    "b": 4,
    "px": 0.715,
    "py": 4,
    "value": 22.195
  },
  {
    "a": 1,
    "b": 4,
    "px": 1.715,
    "py": 4.161,
    "value": 33.433
  },
  {
    "a": 2,
    "b": 4,
    "px": 2.715,
    "py": 4.279,
    "value": 45.905
  },
  {
    "a": 3,
    "b": 4,
    "px": 3.715,
    "py": 4.333,
    "value": 52.641
  },
  {
    "a": 4,
    "b": 4,
    "px": 4.715,
    "py": 4.334,
    "value": 50.238
  },
  {
    "a": 5,
    "b": 4,
    "px": 5.715,
    "py": 4.317,
    "value": 43.99
  },
  {
    "a": 6,
    "b": 4,
    "px": 6.715,
    "py": 4.33,
    "value": 41.06
  },
  {
    "a": 7,
    "b": 4,
    "px": 7.715,
    "py": 4.402,
    "value": 39.729
  },
  {
    "a": 8,
    "b": 4,
    "px": 8.715,
    "py": 4.535,
    "value": 33.562
  },
  {
    "a": 0,
    "b": 5,
    "px": 0.839,
    "py": 5,
    "value": 17.595
  },
  {
    "a": 1,
    "b": 5,
    "px": 1.839,
    "py": 5.161,
    "value": 23.767
  },
  {
    "a": 2,
    "b": 5,
    "px": 2.839,
    "py": 5.279,
    "value": 30.658
  },
  {
    "a": 3,
    "b": 5,
    "px": 3.839,
    "py": 5.333,
    "value": 34.711
  },
  {
    "a": 4,
    "b": 5,
    "px": 4.839,
    "py": 5.334,
    "value": 35.092
  },
  {
    "a": 5,
    "b": 5,
    "px": 5.839,
    "py": 5.317,
    "value": 36.552
  },
  {
    "a": 6,
    "b": 5,
    "px": 6.839,
    "py": 5.33,
    "value": 42.841
  },
  {
    "a": 7,
    "b": 5,
    "px": 7.839,
    "py": 5.402,
    "value": 47.546
  },
  {
    "a": 8,
    "b": 5,
    "px": 8.839,
    "py": 5.535,
    "value": 41.624
  },
  {
    "a": 0,
    "b": 6,
    "px": 1,
    "py": 6,
    "value": 14.308
  },
  {
    "a": 1,
    "b": 6,
    "px": 2,
    "py": 6.161,
    "value": 16.856
  },
  {
    "a": 2,
    "b": 6,
    "px": 3,
    "py": 6.279,
    "value": 19.736
  },
  {
    "a": 3,
    "b": 6,
    "px": 4,
    "py": 6.333,
    "value": 21.699
  },
  {
    "a": 4,
    "b": 6,
    "px": 5,
    "py": 6.334,
    "value": 23.244
  },
  {
    "a": 5,
    "b": 6,
    "px": 6,
    "py": 6.317,
    "value": 27.839
  },
  {
    "a": 6,
    "b": 6,
    "px": 7,
    "py": 6.33,
    "value": 36.881
  },
  {
    "a": 7,
    "b": 6,
    "px": 8,
    "py": 6.402,
    "value": 43.259
  },
  {
    "a": 8,
    "b": 6,
    "px": 9,
    "py": 6.535,
    "value": 38.745
  }
];

const options = {
  "axes": {
    "x": false,
    "y": false
  },
  "height": 620,
  "locale": "ko",
  "mark": {
    "fields": {
      "value": "value",
      "x": "px",
      "y": "py"
    },
    "options": {
      "levels": 4,
      "mode": "grid"
    }
  },
  "title": {
    "subtitle": "Carpet chart 모드가 실행 가능한 데이터와 옵션으로 보여주는 핵심 기능: explicit logical and projected coordinates · logical axis ticks and labels.",
    "text": "Carpet"
  },
  "width": "container",
  "x": {
    "field": "a",
    "title": "Carpet axis A",
    "type": "quantitative"
  },
  "y": {
    "field": "b",
    "title": "Carpet axis B",
    "type": "quantitative"
  }
};

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

이식 가능한 스키마

ChartSpec 0.1 · options

{
  "axes": {
    "x": false,
    "y": false
  },
  "height": 620,
  "locale": "ko",
  "mark": {
    "fields": {
      "value": "value",
      "x": "px",
      "y": "py"
    },
    "options": {
      "levels": 4,
      "mode": "grid"
    }
  },
  "title": {
    "subtitle": "Carpet chart 모드가 실행 가능한 데이터와 옵션으로 보여주는 핵심 기능: explicit logical and projected coordinates · logical axis ticks and labels.",
    "text": "Carpet"
  },
  "width": "container",
  "x": {
    "field": "a",
    "title": "Carpet axis A",
    "type": "quantitative"
  },
  "y": {
    "field": "b",
    "title": "Carpet axis B",
    "type": "quantitative"
  }
}