Chart.js-Y 축 서식 지정


79

내가 사용하고 Chart.js을 간단한 막대 그래프를 그릴 나는 그 Y가 같은 축 포맷해야

123456.05에서 123 456,05 $

사용 방법을 모르겠습니다 scaleLabel : "<%=value%>"

누군가 " JS Micro-Templating "을 가리키는 것을 보았지만
우리의 scaleLabel옵션 과 함께 사용하는 방법에 대한 단서가 없습니다 .

누군가이 Y 축의 형식을 지정하는 방법을 알고 있으며 예를 들어 줄 수 있습니까?


1
OP : 선택한 답변을 재고 해주세요
vsync

답변:


163

나는 같은 문제가 있었고 Chart.js 2.xx 에서는 접근 방식이 아래와 같이 약간 다르다고 생각합니다.

ticks: {
    callback: function(label, index, labels) {
        return label/1000+'k';
    }
}

자세한 내용

var options = {
    scales: {
        yAxes: [
            {
                ticks: {
                    callback: function(label, index, labels) {
                        return label/1000+'k';
                    }
                },
                scaleLabel: {
                    display: true,
                    labelString: '1k = 1000'
                }
            }
        ]
    }
}

3
그 말을 들으니 반갑습니다.
Jaison

4
이것은 또한 올바른 각도-chart.js 함께 할 수있는 방법이 될 것 같다
user1576978

3
이 Ans는 허용되어야합니다. 나는 이것이 2.xx 이상의 새로운 버전에서 작동한다고 생각합니다. 나는 새 버전을 가지고 있고 웹에서 찾은 다른 많은 솔루션을 시도했지만 아무것도 작동하지 않았습니다. 이 .. 유일한 것은 나를 위해 일한입니다
저스틴

2
이것은 잘 작동합니다. 이것은 답으로 받아 들여 져야합니다. 이것을 찾는 데 한 시간이 걸렸습니다. 이것이 문서에없는 이유는 저를 넘어선 것입니다. 어떻게 찾았 어, 제이슨?
Jay

2
이 답변에 감사 드리며 프로젝트에 많은 도움이되었습니다.
mikey242

56

ChartJS 라이브러리의 문서화되지 않은 기능은 문자열 대신 함수를 전달하면 함수를 사용하여 y 축의 scaleLabel을 렌더링한다는 것입니다.

따라서 "<%= Number(value).toFixed(2).replace('.',',') + ' $' %>"작동 하는 동안 다음을 수행 할 수도 있습니다.

scaleLabel: function (valuePayload) {
    return Number(valuePayload.value).toFixed(2).replace('.',',') + '$';
}

원격으로 복잡한 작업을 수행하는 경우 대신이 작업을 수행하는 것이 좋습니다.


이것이 실제로 가장 좋은 대답입니다. 간단한 IF로 인해 JS 코드를 간접적으로 호출하는 임베디드 템플릿 파서를 실행하는 대신 함수가 직접 호출됩니다.
schlingel 2015 년


5

Nevercom이 말했듯이 scaleLable은 javascript를 포함해야하므로 y 값을 조작하려면 필요한 형식을 적용하십시오.

값은 문자열입니다.

var options = {      
    scaleLabel : "<%= value + ' + two = ' + (Number(value) + 2)   %>"
};

jsFiddle 예제

수동 y 스케일을 설정하려면 scaleOverride를 사용할 수 있습니다.

var options = {      
    scaleLabel : "<%= value + ' + two = ' + (Number(value) + 2)   %>",

    scaleOverride: true,
    scaleSteps: 10,
    scaleStepWidth: 10,
    scaleStartValue: 0

};

jsFiddle 예제


1
분명히, 나는 사용자 정의 값 감사 +1로 scaleLabel을 사용하는 방법을 혼동 한
MasoodRehman

5

Chart.js 2.XX

이 게시물이 오래되었다는 것을 알고 있습니다. 하지만보다 유연한 솔루션을 찾고 있다면 여기에

var options = {
        scales: {
            yAxes: [{
                ticks: {
                    beginAtZero: true,
                    callback: function(label, index, labels) {
                        return Intl.NumberFormat().format(label);
                        // 1,350

                        return Intl.NumberFormat('hi', { 
                            style: 'currency', currency: 'INR', minimumFractionDigits: 0, 
                        }).format(label).replace(/^(\D+)/, '$1 ');
                        // ₹ 1,350

                        // return Intl.NumberFormat('hi', {
                            style: 'currency', currency: 'INR', currencyDisplay: 'symbol', minimumFractionDigits: 2 
                        }).format(label).replace(/^(\D+)/, '$1 ');
                        // ₹ 1,350.00
                    }
                }
            }]
        }
    }

'hi'는 힌디어입니다. 다른 로케일 인수 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation#locales_argument 를 확인하십시오.

더 많은 통화 기호
https://www.currency-iso.org/en/home/tables/table-a1.html


매력처럼 일했다! 타이!
Mohammed A. Fadil

2

여기에서 Y 축 값을 포맷하는 방법에 대한 좋은 예를 찾을 수 있습니다.

또한 scaleLabel : "<%=value%>"언급 한 것을 사용할 수 있습니다. 기본적으로 <%=%>태그 사이의 모든 것이 자바 스크립트 코드로 처리 된다는 것을 의미합니다 (즉,if 통계 ...).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.