본문으로 건너뛰기

AreaChart

선 아래를 채운 차트입니다. 합해서 의미가 있는 양을 나타낼 때, 그리고 stacked로는 그 합이 무엇으로 이루어져 있는지를 나타낼 때 씁니다.

tsx
import { AreaChart } from 'neba';

<AreaChart
  label="티어별 사용 스토리지"
  categories={['Jan', 'Feb', 'Mar']}
  stacked
  series={[
    { name: 'Hot', data: [120, 138, 149] },
    { name: 'Archive', data: [610, 648, 690] }
  ]}
/>;

데이터 형식은 모든 차트가 공유합니다. seriescategories, 그리고 0이 아니라 결측을 뜻하는 null입니다. 전체 정의는 LineChart 문서에 있습니다.

둘 중 무엇을 쓸지는 그 양이 무엇인지로 갈립니다. 합해도 아무 뜻이 없는 값이라면(온도, 비율, 점수) 선 아래의 채움은 장식일 뿐이고, 그런 것이 두 개 겹치면 서로를 가릴 뿐입니다.

Props

Prop타입기본값설명
series * NebaChartSeries[]그릴 series. 색은 이 배열에서의 자리로 정해지므로, 범례에서 하나를 숨겨도 나머지 색은 그대로입니다
categories(string | number | Date)[]category 축의 위치 이름. 대신 각 점이 x를 직접 들고 있어도 됩니다
xAxisNebaChartAxiscategory 축
yAxisNebaChartAxis값 축
stackedboolean | 'full'falsetrue는 밴드를 쌓아 위 가장자리가 합계가 되게 하고, full은 각 category를 100%로 정규화해 크기가 아니라 비중의 차트로 만듭니다
curve'linear' | 'smooth' | 'step''linear'밴드 가장자리가 점과 점 사이를 잇는 방식
markers'none' | 'auto' | 'all''none'점 위의 dot. 채워진 밴드에는 이미 보이는 가장자리가 있으므로 기본이 none입니다
valueLabels'none' | 'last' | 'extremes' | 'all''none'밴드 위에 쓸 값
connectNullsbooleanfalsenull을 가로질러 이어 그립니다. 선보다 여기서 더 위험합니다. 채움은 없는 숫자를 더 넓은 면적에 칠합니다
variant공통'solid' | 'outline' | 'text''text'표면의 무게. 차트는 시트가 아니라 그림이므로 기본값이 text입니다. Card 안에 넣으면 가장자리가 겹치지 않습니다. 혼자 서는 차트에는 outline을 주세요
size공통'xs' | 'sm' | 'md' | 'lg' | 'xl''md'축 글자·선 두께·마커 크기, 그리고 height를 주지 않았을 때의 높이
color공통'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info''primary'시트의 색 계열. series의 색은 여기서 오지 않습니다. 팔레트나 series.color가 정합니다
density공통'default' | 'compact''default'여백만 바꿉니다. 높이와 글자 크기는 그대로
elevation공통0 | 1 | 2 | 30그림자 깊이. 0은 그림자 없음
heightnumber | stringsize그림의 높이. 축 라벨도 이 높이 안에 그려집니다
labelstringlocale's word차트의 접근 가능한 이름. 그림 대신 읽히고, 아래에 숨겨진 데이터 표의 caption이 됩니다. 없으면 locale의 일반 명사가 쓰이지만, 무엇에 대한 차트인지는 여기서만 말할 수 있습니다
formatIntl.NumberFormatOptions숫자가 나타나는 모든 곳의 표기, 축·tooltip·값 라벨·표. 없으면 만 이상은 축약됩니다(12.4K)
localestring차트가 스스로 쓰는 말과 날짜의 언어
legendboolean | NebaChartLegendseries ≥ 2series가 둘 이상이면 자동으로 나오고 하나면 나오지 않습니다. 색 하나짜리 범례는 제목을 반복할 뿐입니다
tooltipboolean | NebaChartTooltiptrue포인터가 무엇을 드러낼지. tooltip에만 있는 값은 없습니다. 모든 값이 숨겨진 표에도 있습니다
emptyReactNode그릴 것이 없을 때 대신 그릴 내용

<div>의 native 속성과 Box의 모든 prop이 그대로 전달됩니다. xAxis·yAxis·legend·tooltipLineChart와 같은 형태를 받습니다. 공용 축은 prop 규약을 참고하세요.

예시

stacked

false는 밴드를 겹쳐 그려 "각각 얼마인가"에 답합니다. true는 쌓아서 위쪽 가장자리가 합계가 됩니다. 'full'은 각 category를 100%로 정규화하므로 차트가 크기가 아니라 비중에 대한 것이 됩니다. 값 축이 백분율로 바뀌고 그렇다고 표시하며, tooltip에는 원래 숫자가 남습니다.

series가 하나일 때

series가 하나면 범례가 나오지 않습니다. 무엇을 그린 것인지는 카드의 제목이 이미 말하고 있고, 색 하나짜리 범례는 그 말을 반복할 뿐입니다.

curve · markers · connectNulls

LineChart와 같은 세 prop이며 뜻도 같습니다. 다만 markers의 기본값은 auto가 아니라 none입니다. 채워진 밴드에는 이미 보이는 가장자리가 있습니다.

connectNulls는 선보다 area에서 더 중요합니다. 결측 구간을 가로질러 닫힌 채움은 없는 숫자를 훨씬 넓은 면적에 칠하는 일이기 때문입니다.

tsx
<AreaChart curve="step" markers="all" connectNulls />

값 축

LineChart와 달리 AreaChart는 값 축에 0을 남겨 둡니다. 채움의 두께가 곧 크기이므로, 축을 자르면 밴드의 높이가 아무 뜻도 갖지 못하게 됩니다. 이유가 있다면 yAxismin·max로 여전히 덮어쓸 수 있습니다.

접근성

  • 데이터는 label을 caption으로 하는 화면에 보이지 않는 표로도 렌더링됩니다.
  • plot에 focus할 수 있습니다. ·로 category를 옮기고, Home·End로 양 끝으로, Escape로 해제합니다.
  • stacked="full"일 때 tooltip과 표는 백분율이 아니라 넘긴 값을 그대로 보고합니다. 차트는 비중을 보여 주고, 원래 숫자에도 여전히 닿을 수 있습니다.

Released under the MIT License