어떻게 아래와 같이 x 축을 만들 수 있습니까? http://jsfiddle.net/dv60w8gc/13/ 예하이 차트 틱 간격 사용자 정의
, 정규 확률 : translate
방식을 덮어 쓰기함으로써
1----------10-----40--50--60-----90---------100
예
간격 1 beetwen 및 10 10pxs 동일하지만 지원되지 않는
어떻게 아래와 같이 x 축을 만들 수 있습니까? http://jsfiddle.net/dv60w8gc/13/ 예하이 차트 틱 간격 사용자 정의
, 정규 확률 : translate
방식을 덮어 쓰기함으로써
1----------10-----40--50--60-----90---------100
예
간격 1 beetwen 및 10 10pxs 동일하지만 지원되지 않는
10 내지 40은 5pxs 있지만 가능 y 축에 대한 분포 :
Highcharts.wrap(Highcharts.Axis.prototype, 'translate', function (proceed) {
// Normal Translation
var result = proceed.apply(this, [].slice.call(arguments, 1));
// Apply curving
if (this.options.curvature) {
var val = (arguments[1]/(this.max - this.min)) * (Math.PI) - (Math.PI/2),
val2 = (Math.sin(val) + 1)/2;
result = (this.len * val2);
if (arguments[2] == 0) {
result = this.len - result;
}
}
return result;
});
$('#container').highcharts({
yAxis: {
min: 0,
max: 1,
tickInterval: 0.1,
curvature: true
},
series: [{
data: [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]
}]
});
이하의 코드는 [133, 141, 150, 160, 171, 185, 200, 21 tickPositions 추가 8, 240, 267, 300, 343, 400, 480, 600, 800, 1200, 2400]을 첨부 한 이미지 에서처럼 균일 한 간격으로 배치하십시오. enter image description here
H.wrap(H.Axis.prototype, 'translate', function (proceed) {
var result = proceed.apply(this, [].slice.call(arguments, 1));
if (this.options.curvature) {
var tickPos = [133, 141, 150, 160, 171, 185, 200, 218, 240, 267, 300, 343, 400, 480, 600, 800, 1200, 2400];
var tickPosLen = [275, 259, 243, 227, 211, 195, 178, 162, 146, 130, 114, 98, 81, 65, 49, 33, 17, 1];
var index = tickPos.indexOf(arguments[1]);
if (index >= 0) {
result = tickPosLen[index];
}
if (arguments[2] == 0) {
var arrBiggerElements = tickPos.filter((inArray) => {
return inArray > arguments[1];
});
var nextElement = Math.min.apply(null, arrBiggerElements);
var nextElementIndex = -1;
var prevElementIndex = -1;
if (nextElement == null) {
prevElementIndex = tickPos.length - 1;
} else {
nextElementIndex = tickPos.indexOf(nextElement);
prevElementIndex = nextElementIndex - 1;
}
var nextTickValue = -1;
var prevTickValue = -1;
if (nextElementIndex > 0) {
nextTickValue = tickPos[nextElementIndex];
}
if (prevElementIndex > 0) {
prevTickValue = tickPos[prevElementIndex];
}
if (nextTickValue > 0 && prevTickValue > 0) {
var fac = (nextTickValue - prevTickValue)/16;
var decrement = (arguments[1] - prevTickValue)/fac;
var lowerPointLen = tickPosLen[prevElementIndex];
result = lowerPointLen - decrement;
}
result = this.len - result;
}
}
return result;[enter image description here][1]
어떻게 될까요? API 문서에 따르면 "tickPositioner"는 간단한 데이터 배열을 반환합니다. 틱 사이의 픽셀 간격은 없습니다. 데모 스크립트는 명확하지 않습니다. – user3359229
'tickPositioner'에서'this.width'에 접근 할 수 있습니다 - 그래서 축의 최소, 최대 및 너비를 알 수 있습니다. 이제 원하는 위치에 따라 간단한 배열을 반환하는 로직을 작성하십시오. –
"this.width"를 사용하는 몇 가지 예를 보여줄 수 있습니까? – user3359229