source: Dev/trunk/d3/examples/zoom-pan/zoom-pan-transform.html @ 76

Last change on this file since 76 was 76, checked in by fpvanagthoven, 14 years ago

d3

File size: 2.3 KB
Line 
1<!DOCTYPE html>
2<html>
3  <head>
4    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
5    <title>Zoom + Pan</title>
6    <script type="text/javascript" src="../../d3.js"></script>
7    <script type="text/javascript" src="../../d3.behavior.js"></script>
8    <style type="text/css">
9
10svg {
11  font: 10px sans-serif;
12  shape-rendering: crispEdges;
13}
14
15    </style>
16  </head>
17  <body>
18    <script type="text/javascript">
19
20var size = [710, 500], // width height
21    padding = [4, 4, 20, 40], // top right bottom left
22    tx = function(d) { return "translate(" + x(d) + ",0)"; },
23    ty = function(d) { return "translate(0," + y(d) + ")"; },
24    stroke = function(d) { return d ? "#ccc" : "#666"; };
25
26// x-scale (1.42 = 710/500)
27var x = d3.scale.linear()
28    .domain([-1.42, +1.42])
29    .range([0, size[0]]);
30
31// y-scale (inverted domain)
32var y = d3.scale.linear()
33    .domain([+1.00, -1.00])
34    .range([0, size[1]]);
35
36var svg = d3.select("body").append("svg:svg")
37    .attr("width", size[0] + padding[3] + padding[1])
38    .attr("height", size[1] + padding[0] + padding[2])
39    .attr("pointer-events", "all")
40  .append("svg:g")
41    .attr("transform", "translate(" + padding[3] + "," + padding[0] + ")")
42    .call(d3.behavior.zoom().on("zoom", redraw))
43  .append("svg:g");
44
45// Generate x-ticks

46var gx = svg.selectAll("g.x")
47    .data(x.ticks(10))
48  .enter().append("svg:g")
49    .attr("class", "x")
50    .attr("transform", tx);
51
52gx.append("svg:line")
53    .attr("stroke", stroke)
54    .attr("y1", 0)
55    .attr("y2", size[1]);
56
57gx.append("svg:text")
58    .attr("y", size[1])
59    .attr("dy", "1em")
60    .attr("text-anchor", "middle")
61    .text(x.tickFormat(10));
62
63// Generate y-ticks

64var gy = svg.selectAll("g.y")
65    .data(y.ticks(10))
66  .enter().append("svg:g")
67    .attr("class", "y")
68    .attr("transform", ty);
69
70gy.append("svg:line")
71    .attr("stroke", stroke)
72    .attr("x1", 0)
73    .attr("x2", size[0]);
74
75gy.append("svg:text")
76    .attr("x", -3)
77    .attr("dy", ".35em")
78    .attr("text-anchor", "end")
79    .text(y.tickFormat(10));
80
81svg.append("svg:rect")
82    .attr("width", size[0])
83    .attr("height", size[1])
84    .attr("stroke", stroke)
85    .attr("fill", "none");
86
87function redraw() {
88  svg.attr("transform",
89      "translate(" + d3.event.translate + ")"
90      + "scale(" + d3.event.scale + ")");
91}
92
93    </script>
94  </body>
95</html>
Note: See TracBrowser for help on using the repository browser.