d3.secg.axis.tickFormat과 함께 d3.format ("s")을 사용하여 국제 단위계 (SI) 단위로 눈금 라벨을 멋지게 형식화합니다. 반올림 오류가 발생하고 소수 자리를 반환하는 특정 값 (예 : 1400, 예 : 1400 * 0.001 = 1.4000000000000001)을 제외하고는 대부분 아름답게 작동합니다.d3.format의 가변 정밀도
이 문제를 해결하기 위해 d3.format (".2s")와 같은 정밀도를 지정할 수 있지만이 경우 1이 더 좋은 경우 2 자리 숫자가 사용됩니다. 예를 들어, 틱이 [5000, 10000, 15000]이면 [5.0k, 10k, 15k]가 표시됩니다. 원래는 정밀도를 지정하지 않았을 때 [5k, 10k, 15k]를 얻었습니다.
최대 유효 자릿수가 지정된 수를 초과 할 때만 적용되도록 최대 정밀도를 지정할 수 있는지 궁금합니다. 따라서 5000은 5.0k가 아닌 5k가됩니다.
답장을 보내 주셔서 감사합니다. 불행히도 d3.svg.axis 도우미를 사용하고 있으므로 형식화하는 값은 데이터 값이 아닌 틱 값입니다. 눈금 레이블이 생성 될 때 서식이 내부적으로 수행됩니다. 내 자신의 함수에서 d3.format에서 반환 된 함수를 래핑하여 값을 가로채는 대신 SI 포맷터에서 반환 된 문자열을 다시 구문 분석하면 너무 깨끗한 느낌을 줄 수 없습니다. 나는 그것을 코딩하지 않고 이것을 지원하기 위해 포맷터에 내장 된 것이 있을지 궁금했다. –
아 맞습니다. 내 코드는 틱 레이블이 아닌 데이터 레이블 용입니다. 나는 잘못된 길로 인도하지 않았 으면 좋겠다. 비슷하게 할 수 있겠지만 눈금 표시 기능 (예 : 익명의 기능을 그들에게 전달)으로 할 수 있습니까? – tatlar