Skip to content

Documentation / @finchart/core / LinearScale

Class: LinearScale

Defined in: packages/core/src/scale/linear-scale.ts:4

데이터 도메인 ↔ 화면 좌표의 단방향 매핑. pan/zoom에서 도메인이 계속 바뀌므로 가변(mutable)이다. 잘못된 입력은 Result가 아니라 throw로 알린다.

Implements

Constructors

Constructor

new LinearScale(domainMin?, domainMax?, rangeMin?, rangeMax?): LinearScale

Defined in: packages/core/src/scale/linear-scale.ts:8

Parameters

domainMin?

number

domainMax?

number

rangeMin?

number

rangeMax?

number

Returns

LinearScale

Methods

getDomain()

getDomain(): [number, number]

Defined in: packages/core/src/scale/linear-scale.ts:39

데이터 도메인 [min, max]

Returns

[number, number]

Implementation of

Scale.getDomain


getRange()

getRange(): [number, number]

Defined in: packages/core/src/scale/linear-scale.ts:43

화면 범위 [start, end] (px).

start > end인 역방향도 허용한다. 화면 y는 아래로 증가하므로 y축은 [bottom, top]으로 설정해 큰 값이 위에 오게 만든다 — 이 반전을 스케일이 들고 있어야 차트와 축이 같은 좌표를 본다.

Returns

[number, number]

Implementation of

Scale.getRange


invert()

invert(screenValue): number

Defined in: packages/core/src/scale/linear-scale.ts:55

화면 좌표 → 데이터 값

Parameters

screenValue

number

Returns

number

Implementation of

Scale.invert


scale()

scale(value): number

Defined in: packages/core/src/scale/linear-scale.ts:47

데이터 값 → 화면 좌표

Parameters

value

number

Returns

number

Implementation of

Scale.scale


setDomain()

setDomain(min, max): void

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

길목이다 — F1. y 도메인도 x 도메인도 예외 없이 여기를 지나고 (pane.ts:589·1006·1021 · x-viewport.ts 9곳), 축은 getDomain()으로 읽기만 한다(axis.ts:52). 따라서 스케일이 비유한 도메인을 품지 않으면 axis.ts의 눈금 루프가 무한이 될 수 없다.

예전에는 min >= max만 봤다. -Infinity < Infinity라 통과했고, 그 도메인이 축에 닿으면 count = Infinity가 되어 탭이 OOM으로 죽었다 (36차 B1).

Parameters

min

number

max

number

Returns

void

Implementation of

Scale.setDomain


setRange()

setRange(start, end): void

Defined in: packages/core/src/scale/linear-scale.ts:35

Parameters

start

number

end

number

Returns

void

Implementation of

Scale.setRange