4
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
6
<script type="text/javascript" src="../../d3.v2.js"></script>
7
<style type="text/css">
10
font: 10px sans-serif;
14
-webkit-transition: fill-opacity 250ms linear;
21
.selecting path.selected {
26
.axis path, .axis line {
29
shape-rendering: crispEdges;
35
shape-rendering: crispEdges;
41
<script type="text/javascript">
43
var data = d3.svg.symbolTypes;
45
var m = [10, 10, 20, 10],
46
w = 960 - m[1] - m[3],
47
h = 100 - m[0] - m[2];
49
var x = d3.scale.ordinal().domain(data).rangePoints([0, w], 1);
51
var svg = d3.select("body").append("svg")
52
.attr("width", w + m[1] + m[3])
53
.attr("height", h + m[0] + m[2])
55
.attr("transform", "translate(" + m[3] + "," + m[0] + ")");
58
.attr("class", "x axis")
59
.attr("transform", "translate(0," + h + ")")
60
.call(d3.svg.axis().scale(x).orient("bottom"));
62
var symbol = svg.append("g").selectAll("path")
64
.enter().append("path")
65
.attr("transform", function(d) { return "translate(" + x(d) + "," + (h / 2) + ")"; })
66
.attr("d", d3.svg.symbol().type(String).size(200));
69
.attr("class", "brush")
70
.call(d3.svg.brush().x(x)
71
.on("brushstart", brushstart)
72
.on("brush", brushmove)
73
.on("brushend", brushend))
77
function brushstart() {
78
svg.classed("selecting", true);
81
function brushmove() {
82
var s = d3.event.target.extent();
83
symbol.classed("selected", function(d) { return s[0] <= (d = x(d)) && d <= s[1]; });
87
svg.classed("selecting", !d3.event.target.empty());