ChartBlock
문제와 해설 안의 그래프(선, 막대, 점)를 그린다. 함수 그래프는 교과서처럼 원점을 지나는 화살표 축으로, 자료 그래프는 격자와 눈금과 범례로 그린다.
- 분류
- 학습 콘텐츠
- 가져오기
import { ChartBlock } from '@/ui/blocks/ChartBlock'- 코드 위치
apps/mobile/src/ui/blocks/ChartBlock.tsx:27
미리보기#
실제 컴포넌트를 화면에 그린 것이다. 화면 아래의 서비스 색 선택기로 색을 바꿔 볼 수 있다. 버튼과 입력 칸은 직접 눌러 볼 수 있다.
언제 쓰는가#
쓴다
- 문제 안의 그래프를
Blocks가 자동으로 부른다. 직접 쓰는 일은 드물다. - 그래프의 폭은 항상 부모 폭이다.
쓰지 않는다
- 앱의 학습 통계에는 쓰지 않는다. 통계는
HourBars,AreaLine같은 차트를 쓴다. - 그래프 모양을 위해 코드에서 점을 조작하지 않는다. 서버가 만든 점을 그대로 그린다.
종류#
| 이름 | 설명 |
|---|---|
| 함수 그래프 (cartesian) | 막대가 아니고, 범주축이 없고, 두 축의 범위가 0을 포함하며 단위가 없을 때. 원점을 지나는 화살표 축, 격자 없음, x · y · O 글자. |
| 자료 그래프 | 그 밖의 모든 경우. 격자, 눈금, 단위, 범주, 막대, 범례. |
| kind | line(선), bar(막대), scatter(점). |
크기#
| 이름 | 값 | 설명 |
|---|---|---|
| 기본 | 높이 = min(폭 × 0.64, 240) | compact는 폭 × 0.66. |
상태#
| 상태 | 모습과 동작 |
|---|---|
| 시리즈 색 | 1번째 primary, 2번째 danger, 3번째 mint, 4번째 amber. |
| 보조선·표시 | lines(가로·세로 보조선)와 marks(강조점과 라벨)를 그린다. |
사용 방법#
기본
기본
import { ChartBlock } from '@/ui/blocks/ChartBlock';
<ChartBlock block={block} compact={inChoice} />속성(props)#
| 이름 | 타입 | 기본값 | 필수 | 설명 |
|---|---|---|---|---|
block | Chart | — | 필수 | 그래프 블록({ t: "chart", kind, x, y, series, lines?, marks? }). 축 x, y는 { label?, unit?, cats?, min, max }. |
compact | boolean | — | 선택 | true이면 보기 안에 들어가게 작게 그린다(글자 10, 높이 폭 × 0.66). |
치수와 토큰#
- 색
primary,danger,mint,amber순서- 글자
- 눈금과 라벨 11px(
compact10), 색textTertiary - 안쪽 여백
- 함수 그래프 14/16/14/14, 자료 그래프 36/12/18/24 (왼/오/위/아래)
- 눈금
- 약 4개, 1·2·2.5·5·10 배수로 고른다
접근성#
- 그래프 전체에 "그래프, 가로 {라벨}, 세로 {라벨}"이라는 이름이 붙는다. 점의 값은 읽히지 않으므로 문제 글에 필요한 값을 써 둔다.
- 시리즈는 색과 범례의 이름으로 함께 구분한다.
잘한 예와 잘못한 예#
값이 글에 없는 그래프
함께 보는 컴포넌트#
- Blocks: 문제 본문, 보기, 해설을 이루는 블록(문단, 보기 상자, 수식, 표, 그래프, 그림)을 위에서 아래로 그린다.
RichText는 그중 문단 하나다. - DiagramBlock: 선, 도형, 글자, 회로 부품(저항, 전지, 전구, 스위치), 스프링 같은 기본 모양으로 만든 도식을 그린다. 컨테이너 폭에 맞게 줄어든다.
- HourBars: 값 축이 있는 막대 차트다. 학습 시간(시간·분)이나 푼 문제 수를 날짜별로 보여 주고, 고른 막대 위에 말풍선이 뜬다.