0
분산 형 플롯을 설계 중입니다. 다음 예에서 축척 함수의 입력 도메인은 [0.04, 0.9]입니다. 필요한 경우 SI 표시를 표시하기 위해 .tickFormat(d3.format(".1s"))
이 축에 사용됩니다. 냈다 다음 실행하는 동안, 당신은 대신 0.5을 표시하는 라벨이 500m를 보여주는 것을 알 수 있습니다 :십진수 스케일 도메인으로 SI 틱을 틱
var margin = {top: 20, right: 0, bottom: 20, left: 0},
width = 300 - margin.left - margin.right,
height = 175 - margin.top - margin.bottom;
var x = d3.scale.ordinal()
.domain([0])
.rangePoints([0, width], 1);
var y = d3.scale.linear()
.domain([0.04, 0.9])
.range([height, 0]);
var svg = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
svg.append("g")
.attr("transform", "translate(" + x(0) + ",0)")
.attr("class", "axis")
.call(d3.svg.axis()
.scale(y)
.orient("left")
.ticks(2)
.tickFormat(d3.format(".1s")));
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.axis text {
font: 10px sans-serif;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
내가 D3이 경우 0.5을 고수하고자합니다. 입력 영역이 [0.004, 0.009]과 같이 내려 가면 SI 번복으로 전환해야합니다.
http://jsfiddle.net/kreide/hw9vcnkc/ (jsfiddle 내 예와 그것을 밖으로 시도해야하는 경우)
마이크로 단위로 작업하는 동안 패턴을 제공해야하므로 일반 방법이 너무 좋지 않습니다. 예를 들어 도메인 ** [0.0001, 0.0002] ** - ** 100μ ** 대신 ** ** 0.1m **을 표시하고 싶습니다. 요점은 실제로 **/1000 ** 대신에 **/100 steps **에있는 다음 SI로 갈 것입니다. 모든 가능한 단위에 대해 당신과 같은 기능을 제공해야한다고 생각합니다. 그것은 내가 얻을 수있는 최선의 해결책이므로, 지적 해 주셔서 고맙습니다. – zunder
그런 경우 SI 단위 형식의 구현을 살펴보고 필요에 맞게 조정할 수 있습니다. –