record Dygraph in independent-series.html
[dygraphs.git] / tests / independent-series.html
1 <html>
2 <head>
3 <title>Independent Series</title>
4 <!--[if IE]>
5 <script type="text/javascript" src="../excanvas.js"></script>
6 <![endif]-->
7 <script type="text/javascript" src="../strftime/strftime-min.js"></script>
8 <script type="text/javascript" src="../rgbcolor/rgbcolor.js"></script>
9 <script type="text/javascript" src="../dygraph-canvas.js"></script>
10 <script type="text/javascript" src="../dygraph.js"></script>
11 <style type="text/css">
12 .thinborder {
13 border-width: 1px;
14 border-spacing: 0px;
15 border-style: solid;
16 border-color: black;
17 border-collapse: collapse;
18 }
19
20 .thinborder td,
21 .thinborder th {
22 border-width: 1px;
23 padding: 5px;
24 border-style: solid;
25 border-color: black;
26 }
27 </style>
28 </head>
29 <body>
30 <p>By using the connectSeparated attribute, it's possible to display a chart of several time series with completely independent x-values.</p>
31
32 <p>The trick is to specify values for the series at the union of the x-values of all series. For one series' x values, specify <code>null</code> for each of the other series.</p>
33
34 <div id="graph" style="float: right; margin-right: 50px; width: 400px; height: 300px;"></div>
35 <p>For example, say you had two series:</p>
36 <table><tr>
37 <td valign=top>
38 <table>
39 <table class=thinborder>
40 <tr><th>x</th><th>A</th></tr>
41 <tr><td>2</td><td>2</td></tr>
42 <tr><td>4</td><td>6</td></tr>
43 <tr><td>6</td><td>4</td></tr>
44 </table>
45 </td>
46 <td valign=top style="padding-left:25px;">
47 <table class=thinborder>
48 <tr><th>x</th><th>B</th></tr>
49 <tr><td>1</td><td>3</td></tr>
50 <tr><td>3</td><td>7</td></tr>
51 <tr><td>5</td><td>5</td></tr>
52 </table>
53 </td>
54 </tr></table>
55
56 <p>Then you would specify the following CSV or native data:</p>
57 <table><tr>
58 <td valign=top>
59 (CSV)
60 <pre>X,A,B
61 1,,3
62 2,2,
63 3,,7
64 4,6,
65 5,,5
66 6,4,</pre>
67 </td>
68 <td valign=top style="padding-left: 25px;">
69 (native)
70 <pre>[
71 [1, null, 3],
72 [2, 2, null],
73 [3, null, 7],
74 [4, 6, null],
75 [5, null, 5],
76 [6, 4, null] ]</pre>
77 </td>
78 </tr></table>
79
80 <script type="text/javascript">
81 new Dygraph(
82 document.getElementById("graph"),
83 [
84 [1, null, 3],
85 [2, 2, null],
86 [3, null, 7],
87 [4, 5, null],
88 [5, null, 5],
89 [6, 3, null]
90 ],
91 {
92 labels: ["x", "A", "B" ],
93 connectSeparatedPoints: true,
94 drawPoints: true
95 }
96 );
97 </script>
98
99 <h3>Encoding a gap</h3>
100 <p>There's one extra wrinkle. What if one of the series has a missing
101 value, i.e. what if your series are something like </p>
102
103 <table><tr>
104 <td valign=top>
105 <table>
106 <table class=thinborder>
107 <tr><th>x</th><th>A</th></tr>
108 <tr><td>2</td><td>2</td></tr>
109 <tr><td>4</td><td>4</td></tr>
110 <tr><td>6</td><td>(gap)</td></tr>
111 <tr><td>8</td><td>8</td></tr>
112 <tr><td>10</td><td>10</td></tr>
113 </table>
114 </td>
115 <td valign=top style="padding-left:25px;">
116 <table class=thinborder>
117 <tr><th>x</th><th>B</th></tr>
118 <tr><td>1</td><td>3</td></tr>
119 <tr><td>3</td><td>5</td></tr>
120 <tr><td>5</td><td>7</td></tr>
121 </table>
122 </td>
123 </tr></table>
124
125 <div id="graph2" style="float: right; margin-right: 50px; width: 400px; height: 300px;"></div>
126 <p>The gap would normally be encoded as a null, or missing value. But when you use <code>connectSeparatedPoints</code>, that has a special meaning. Instead, you have to use <code>NaN</code>. This is a bit of a hack, but it gets the job done.</p>
127
128 <script type="text/javascript">
129 g2 = new Dygraph(
130 document.getElementById("graph2"),
131 "x,A,B \n" +
132 "1,,3 \n" +
133 "2,2, \n" +
134 "3,,5 \n" +
135 "4,4, \n" +
136 "5,,7 \n" +
137 "6,NaN, \n" +
138 "8,8, \n" +
139 "10,10, \n"
140 , {
141 labels: ["x", "A", "B" ],
142 connectSeparatedPoints: true,
143 drawPoints: true
144 }
145 );
146 </script>
147
148 <table><tr>
149 <td valign=top>
150 (CSV)
151 <pre>x,A,B
152 1,,3
153 2,2,
154 3,,5
155 4,4,
156 5,,7
157 6,NaN,
158 8,8,
159 10,10,</pre>
160 </td>
161 <td valign=top style="padding-left: 25px;">
162 (native)
163 <pre>[ [1, null, 3],
164 [2, 2, null],
165 [3, null, 5],
166 [4, 4, null],
167 [5, null, 7],
168 [6, NaN, null],
169 [8, 8, null],
170 [10, 10, null] ]</pre>
171 </td>
172 </tr></table>
173
174 </body>
175 </html>