javascript - Svg brush as slider. How to set slider scale graduation frequency -
in http://bl.ocks.org/mbostock/6452972#index.html slider example there seems no explicit assignment scale graduation frequency.
what if want graduete scale 10 , not 20. how can achieve that?
at moment graduation like:
0 20 40 etc.
i want:
0 10 20 etc.
how can achieve explicitly in javascript file?
call axis.ticks() set number of ticks want. in example below i've added ticks(20)
<!doctype html> <meta charset="utf-8"> <style> .axis { font: 10px sans-serif; -webkit-user-select: none; -moz-user-select: none; user-select: none; } .axis .domain { fill: none; stroke: #000; stroke-opacity: .3; stroke-width: 10px; stroke-linecap: round; } .axis .halo { fill: none; stroke: #ddd; stroke-width: 8px; stroke-linecap: round; } .slider .handle { fill: #fff; stroke: #000; stroke-opacity: .5; stroke-width: 1.25px; cursor: crosshair; } </style> <body> <script src="http://d3js.org/d3.v3.min.js"></script> <script> var margin = {top: 200, right: 50, bottom: 200, left: 50}, width = 960 - margin.left - margin.right, height = 500 - margin.bottom - margin.top; var x = d3.scale.linear() .domain([0, 180]) .range([0, width]) .clamp(true); var brush = d3.svg.brush() .x(x) .extent([0, 0]) .on("brush", brushed); 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("class", "x axis") .attr("transform", "translate(0," + height / 2 + ")") .call(d3.svg.axis() .scale(x) .orient("bottom") .tickformat(function(d) { return d + "°"; }) .ticksize(0) .ticks(20) .tickpadding(12)) .select(".domain") .select(function() { return this.parentnode.appendchild(this.clonenode(true)); }) .attr("class", "halo"); var slider = svg.append("g") .attr("class", "slider") .call(brush); slider.selectall(".extent,.resize") .remove(); slider.select(".background") .attr("height", height); var handle = slider.append("circle") .attr("class", "handle") .attr("transform", "translate(0," + height / 2 + ")") .attr("r", 9); slider .call(brush.event) .transition() // gratuitous intro! .duration(750) .call(brush.extent([70, 70])) .call(brush.event); function brushed() { var value = brush.extent()[0]; if (d3.event.sourceevent) { // not programmatic event value = x.invert(d3.mouse(this)[0]); brush.extent([value, value]); } handle.attr("cx", x(value)); d3.select("body").style("background-color", d3.hsl(value, .8, .8)); } </script>
Comments
Post a Comment