카펫 차트

두 입력 조건이 함께 달라질 때 결과가 어떻게 변하는지 살펴보세요.

카펫 차트

가장 단순한 차트

차트를 살펴보고, 표에서 원본 데이터를 확인하세요. 아래에서 같은 예제의 코드를 펼칠 수 있습니다.

기본 예제

불러오는 중

조작 도움말

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

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

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

불러오는 중

코드와 설정 보기

브라우저 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"
  }
}
Quick API
carpet()
브라우저 스냅샷
graflume/complete
mark
carpet
프리셋
3
  • minimal-implementation

공통 기능

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

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

헤더

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

불러오는 중

조작 도움말

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

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

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

불러오는 중

코드와 설정 보기

브라우저 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": "카펫 차트"
  },
  "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": "카펫 차트"
  },
  "width": "container",
  "x": {
    "field": "a",
    "title": "Carpet axis A",
    "type": "quantitative"
  },
  "y": {
    "field": "b",
    "title": "Carpet axis B",
    "type": "quantitative"
  }
}
  • header