x 축에 선형 눈금을 사용하는 d3 그래프가 있습니다. 다음과 같이 보입니다 :축의 다른 값을 D3의 축척 함수에서 찾은 값과 다르게 표시합니다.
...
y |
|
+-------------------------------------------
0.0 0.5 1.0 1.5 2.0 2.5 3.0
Time in weeks
x 축에 정렬 된 데이터 행을 표시하려고합니다. 이 데이터를 사용하여
23 23 22 19
:이 같은 nums
가 Time in weeks
X 축에 가을해야하는 위치
var nums = [23, 23, 22, 19];
var times = [0, 0.5, 1.5, 3];
times
nums
의 첫 번째 인덱스는
0.0
이고 두 번째 인덱스는
0.5
입니다.
var x = d3.scale.linear().domain([0,3]).range([0, 600]);
그래서 x(0.5)
새로운 축에 눈금을 표시하기위한 올바른 범위 값을 반환
스케일 기능은 다음과 같이 보입니다. 하지만 표시하고자하는 것은 nums
배열의 해당 값입니다. 즉, nums[times.indexOf(0.5)]
의 값을 표시합니다.
여전히 입력 영역으로서 times
을 사용하면서 nums
값 대신 times
값이 표시되도록 d3.svg.axis()
의해 사용되는 scale()
을 대체하는 방법이 있는가?
편집
편집 2
나는 ne8il의 대답 덕분에 그것을 알아 냈다. 답은 완전한 아니었지만,이 코드의 기초가 형성 :이 경우에 생각
var x1Axis = d3.svg.axis()
.scale(x1)
.ticks(nums)
.tickValues(times)
.tickFormat(function(x){return nums[times.indexOf(x)];})
선형 배율에서는 'axis.ticks()'에 배열을 전달하는 것이 지원되지 않습니다 ([here] (https://github.com/mbostock/d3/wiki/SVG-Axes# 참조). wiki-ticks)). 어쨌든이 코드는 작동하지 않습니다. 나는 당신을 위해 모범을 보완하려고 노력할 것이다. –
편집 : [데모보기] (http://jsbin.com/ocugeg/2/edit) –
도움이 될 수있어서 기쁩니다. 'nums'를 데이터 배열 자체로 옮기려면 http://jsbin.com/ocugeg/8/edit와 같이 하드 코드 된 데이터 배열이 아닌 데이터 배열에 의존 할 수 있습니다. 그것이 얼마나 도움이되는지 확실하지 않지만 나는 그걸 가지고 놀고 있었다. – ne8il