Skip to content

Documentation / @finchart/core / XMapping

Interface: XMapping

Defined in: packages/core/src/scale/x-mapping.ts:16

데이터의 x가 화면 어디에 놓이는가. 시리즈가 x에 대해 아는 전부다.

시리즈가 Scale을 직접 쓰면 "x는 연속이다"가 그리는 코드 곳곳에 박혀, 금융 차트가 원하는 봉 번호 좌표계(주말·휴장이 공백으로 벌어지지 않는다)를 얹을 자리가 없다.

그래서 한 겹을 둔다. Scale은 그 아래에서 도메인↔픽셀만 하고, "도메인이 시간인가 봉 번호인가"는 이 계약이 정한다.

연속이 기본이다 — 불규칙한 수치 x를 봉 번호로 바꾸면 간격의 의미가 사라지므로, 봉 번호는 그것을 원하는 차트가 고르는 것이어야 한다.

Properties

barSpacingDefaults?

optional barSpacingDefaults?: object

Defined in: packages/core/src/scale/x-mapping.ts:40

배선이 안 정했을 때 쓸 봉 간격 한계 (도메인 한 단위당 픽셀).

도메인 한 단위가 무엇인지 아는 것은 매핑뿐이라 기본값도 매핑이 선언한다 — 연속 매핑의 한 단위는 ms일 수도 일수일 수도 있어 코어가 짐작하면 재앙이다. PlotConfigmin/maxBarSpacing이 언제나 이긴다.

max?

optional max?: number

min?

optional min?: number


domainToPixel?

optional domainToPixel?: (value) => number

Defined in: packages/core/src/scale/x-mapping.ts:83

스케일 도메인 값 → 화면 px. toDomain/fromDomain이 만든 자리(place)를 픽셀로 놓는 O(1) 산술이다 — toPixel의 뒷절반.

솎기가 이미 계산한 자리로 그릴 때 쓴다 — 점마다 병합 x 목록을 뒤지는 앞절반(toDomain)이 통째로 빠진다. 없으면 그리기가 toPixel로 물러난다.

Parameters

value

number

Returns

number

Methods

fromDomain()

fromDomain(value): number

Defined in: packages/core/src/scale/x-mapping.ts:31

스케일 도메인 값 → 데이터의 x. toDomain의 역이다.

Parameters

value

number

Returns

number


fromPixel()

fromPixel(px): number

Defined in: packages/core/src/scale/x-mapping.ts:20

화면 px → 데이터의 x

Parameters

px

number

Returns

number


rebuild()?

optional rebuild(sources): void

Defined in: packages/core/src/scale/x-mapping.ts:49

데이터가 바뀌었다 — 인덱스를 다시 세울 기회다. 없으면 셀 것이 없다는 뜻이고(연속 매핑), Plot은 그때 x를 모으는 일 자체를 건너뛴다.

sources는 등록마다의 x 목록이다(각각 오름차순). 합쳐서 인덱스를 만드는 것은 매핑의 일이다 — Plot은 x를 모으기만 한다.

Parameters

sources

readonly readonly number[][]

Returns

void


scanToDomain()?

optional scanToDomain(): (x) => number

Defined in: packages/core/src/scale/x-mapping.ts:63

오름차순 훑기 한 판(pass)을 연다 — toDomain과 같은 답을 내는 함수를 돌려주되, 그 함수가 자기만의 커서를 소유한다.

커서를 매핑 안에 하나 두고 모든 호출자가 공유하면, 훑는 소비자와 점 단위 소비자(그리기·히트 판정)가 서로의 커서를 짓밟는다. toDomain은 순수(이진 탐색, 상태 0)로 두고, 훑기 가속이 필요한 쪽만 이 문으로 판을 열어 그 판과 함께 나고 죽는 커서를 쓴다.

없으면 도메인이 x와 같다는 뜻이다(연속 매핑) — rebuild와 같은 규칙, 존재 자체가 선언이다.

Returns

(x) => number


scanToPixel()?

optional scanToPixel(): (x) => number

Defined in: packages/core/src/scale/x-mapping.ts:73

scanToDomain의 화면 형태 — 오름차순 훑기 한 판의 toPixel이다. 그리기가 이 판의 두 번째 소비자다: 시리즈는 점을 x 오름차순으로 훑으므로 점마다 이진 탐색 대신 판 소유 커서로 걷는다.

규칙은 scanToDomain과 같다 — 답은 toPixel과 항상 같고(빗나가면 이진 탐색으로 떨어질 뿐), 없으면 toPixel이 이미 O(1)이라는 뜻이다.

Returns

(x) => number


toDomain()

toDomain(x): number

Defined in: packages/core/src/scale/x-mapping.ts:29

데이터의 x → 스케일 도메인 값. 연속이면 항등, 봉 번호면 인덱스다.

pan/zoom은 스케일 도메인에서 돌고(봉 번호에서는 그래야 봉 단위로 고르게 움직인다), 데이터 쪽 세상(자르기·이벤트)은 x로 말한다. 인덱스는 x의 단조 함수라 구간이 구간으로 옮겨진다.

Parameters

x

number

Returns

number


toPixel()

toPixel(x): number

Defined in: packages/core/src/scale/x-mapping.ts:18

데이터의 x → 화면 px

Parameters

x

number

Returns

number