4 <title>multi-scale
</title>
5 <script type=
"text/javascript" src=
"../dygraph-dev.js"></script>
6 <style type=
"text/css">
12 <body style=
"max-width: 700px;">
13 <p>Gridlines and axis labels make charts easier to understand. They give
14 the lines a clear scale. Unless you tell it otherwise, dygraphs will choose
15 a y-axis and set of gridlines which include all of your data.
</p>
17 <p>If you have many series with different scales, this will compress the
18 variation in all but the largest one. Standard ways to deal with this
19 include
<a href=
"two-axes.html">secondary y-axes
</a> and
<a
20 href=
"logscale.html">log scales
</a>.
</p>
22 <p>If neither of these is to your liking, you can manually rescale your
23 series and undo that scaling for the hover values. This demo shows how to
26 <div id=
"demodiv"></div>
28 <p>Hover over to see the original values. This is what the data looks
29 like without any rescaling:
</p>
31 <div id=
"reference_div"></div>
33 <script type=
"text/javascript">
34 var zp = function(x) { if (x <
10) return
"0"+x; else return x; };
35 var labels = [
"date",
"parabola",
"line",
"another line",
"sine wave"];
37 for (var i=
1; i<=
31; i++) {
39 row.push(new Date(
"2006/10/" + zp(i)));
40 row.push(
10*(i*(
31-i)));
42 row.push(
1000*(
250 -
8*i));
43 row.push(
10000*(
125 +
125 * Math.sin(
0.3*i)));
53 var rescaled_data = [];
54 for (var i =
0; i < data.length; i++) {
58 for (var j =
1; j < src.length; j++) {
59 row.push(src[j] / scales[labels[j]]);
61 rescaled_data.push(row);
65 document.getElementById(
"demodiv"),
72 title: 'Four series on different scales',
77 valueFormatter: function(y, opts, series_name) {
78 var unscaled = y * scales[series_name];
79 if (series_name == 'sine wave') return unscaled.toPrecision(
4);
88 document.getElementById(
"reference_div"),
95 title: 'Four series on the same scale',