]> git.pond.sub.org Git - eow/blob - static/dojo-release-1.1.1/dojox/charting/tests/test_chart2d.html
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / charting / tests / test_chart2d.html
1 <html>
2 <head>
3 <title>Chart 2D</title>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <style type="text/css">
6         @import "../../../dojo/resources/dojo.css";
7         @import "../../../dijit/tests/css/dijitTests.css";
8 </style>
9 <!--
10 The next line should include Microsoft's Silverligth.js, if you plan to use the silverlight backend
11 <script type="text/javascript" src="Silverlight.js"></script>
12 -->
13 <script type="text/javascript" src="../../../dojo/dojo.js" djConfig="isDebug: true"></script>
14 <script type="text/javascript" src="../../lang/functional.js"></script>
15 <script type="text/javascript" src="../../lang/utils.js"></script>
16 <script type="text/javascript" src="../Theme.js"></script>
17 <script type="text/javascript" src="../scaler.js"></script>
18 <script type="text/javascript" src="../Element.js"></script>
19 <script type="text/javascript" src="../axis2d/common.js"></script>
20 <script type="text/javascript" src="../axis2d/Base.js"></script>
21 <script type="text/javascript" src="../axis2d/Default.js"></script>
22 <script type="text/javascript" src="../plot2d/common.js"></script>
23 <script type="text/javascript" src="../plot2d/Base.js"></script>
24 <script type="text/javascript" src="../plot2d/Default.js"></script>
25 <script type="text/javascript" src="../plot2d/Lines.js"></script>
26 <script type="text/javascript" src="../plot2d/Areas.js"></script>
27 <script type="text/javascript" src="../plot2d/Markers.js"></script>
28 <script type="text/javascript" src="../plot2d/MarkersOnly.js"></script>
29 <script type="text/javascript" src="../plot2d/Scatter.js"></script>
30 <script type="text/javascript" src="../plot2d/Stacked.js"></script>
31 <script type="text/javascript" src="../plot2d/StackedLines.js"></script>
32 <script type="text/javascript" src="../plot2d/StackedAreas.js"></script>
33 <script type="text/javascript" src="../plot2d/Columns.js"></script>
34 <script type="text/javascript" src="../plot2d/StackedColumns.js"></script>
35 <script type="text/javascript" src="../plot2d/ClusteredColumns.js"></script>
36 <script type="text/javascript" src="../plot2d/Bars.js"></script>
37 <script type="text/javascript" src="../plot2d/StackedBars.js"></script>
38 <script type="text/javascript" src="../plot2d/ClusteredBars.js"></script>
39 <script type="text/javascript" src="../plot2d/Grid.js"></script>
40 <script type="text/javascript" src="../plot2d/Pie.js"></script>
41 <script type="text/javascript" src="../Chart2D.js"></script>
42 <script type="text/javascript">
43
44 dojo.require("dojox.charting.Chart2D");
45 dojo.require("dojox.charting.themes.PlotKit.blue");
46 dojo.require("dojox.charting.themes.PlotKit.cyan");
47 dojo.require("dojox.charting.themes.PlotKit.green");
48 dojo.require("dojox.charting.themes.PlotKit.orange");
49 dojo.require("dojox.charting.themes.PlotKit.purple");
50 dojo.require("dojox.charting.themes.PlotKit.red");
51 dojo.require("dojox.charting.themes.ET.greys");
52
53 makeObjects = function(){
54         var chart1 = new dojox.charting.Chart2D("test1");
55         chart1.addSeries("Series A", [1, 2, 1, 2, 1, 2, 1]);
56         chart1.addSeries("Series B", [2, 1, 2, 1, 2, 1, 2]);
57         chart1.render();
58
59         var chart2 = new dojox.charting.Chart2D("test2");
60         chart2.addSeries("Series A", [1, 2, 1, 2, 1, 2, 1], {stroke: "red"});
61         chart2.addSeries("Series B", [2, 1, 2, 1, 2, 1, 2], {stroke: "blue"});
62         chart2.render();
63
64         var chart3 = new dojox.charting.Chart2D("test3");
65         chart3.addPlot("default", {type: "Areas", tension:2.5});
66         chart3.setTheme(dojox.charting.themes.PlotKit.orange);
67         chart3.addSeries("Series A", [1, 2, 0.5, 1.5, 1, 2.8, 0.4]);
68         chart3.addSeries("Series B", [2.6, 1.8, 2, 1, 1.4, 0.7, 2]);
69         chart3.addSeries("Series C", [6.3, 1.8, 3, 0.5, 4.4, 2.7, 2]);
70         chart3.render();
71
72         var chart4 = new dojox.charting.Chart2D("test4");
73         chart4.addPlot("default", {type: "Areas"});
74         chart4.addSeries("Series A", [1, 2, 1, 2, 1, 2, 1], {stroke: {color: "red", width: 2}, fill: "lightpink"});
75         chart4.addSeries("Series B", [2, 1, 2, 1, 2, 1, 2], {stroke: {color: "blue", width: 2}, fill: "lightblue"});
76         chart4.render();
77
78         var chart5 = new dojox.charting.Chart2D("test5");
79         chart5.setTheme(dojox.charting.themes.PlotKit.blue);
80         chart5.addAxis("x");
81         chart5.addAxis("y", {vertical: true});
82         chart5.addSeries("Series A", [1, 2, 1, 2, 1, 2, 1]);
83         chart5.addSeries("Series B", [2, 1, 2, 1, 2, 1, 2]);
84         chart5.render();
85
86         var chart6 = new dojox.charting.Chart2D("test6");
87         chart6.setTheme(dojox.charting.themes.PlotKit.cyan);
88         chart6.addAxis("x", {fixLower: "minor", fixUpper: "minor"});
89         chart6.addAxis("y", {vertical: true, fixLower: "minor", fixUpper: "minor"});
90         chart6.addSeries("Series A", [1, 2, 1, 2, 1, 2, 1]);
91         chart6.addSeries("Series B", [2, 1, 2, 1, 2, 1, 2]);
92         chart6.render();
93
94         var chart7 = new dojox.charting.Chart2D("test7");
95         chart7.setTheme(dojox.charting.themes.PlotKit.green);
96         chart7.addAxis("x", {fixLower: "major", fixUpper: "major"});
97         chart7.addAxis("y", {vertical: true, fixLower: "major", fixUpper: "major"});
98         chart7.addSeries("Series A", [1, 2, 1, 2, 1, 2, 1]);
99         chart7.addSeries("Series B", [2, 1, 2, 1, 2, 1, 2]);
100         chart7.render();
101
102         var chart8 = new dojox.charting.Chart2D("test8");
103         chart8.setTheme(dojox.charting.themes.PlotKit.purple);
104         chart8.addPlot("default", {type: "Markers"});
105         chart8.addSeries("Series A", [1, 2, 1, 2, 1, 2, 1], {min: 0, max: 3});
106         chart8.addSeries("Series B", [2, 1, 2, 1, 2, 1, 2]);
107         chart8.render();
108
109         var chart9 = new dojox.charting.Chart2D("test9");
110         chart9.addPlot("default", {type: "MarkersOnly"});
111         chart9.addSeries("Series A", [1, 2, 1, 2, 1, 2, 1], {min: 0, max: 3, stroke: {color: "red", width: 2}, marker: "m-3,0 c0,-4 6,-4 6,0 m-6,0 c0,4 6,4 6,0"});
112         chart9.addSeries("Series B", [2, 1, 2, 1, 2, 1, 2], {stroke: {color: "blue", width: 2}, marker: "m-3,-3 l0,6 6,0 0,-6 z"});
113         chart9.render();
114
115         var chart10 = new dojox.charting.Chart2D("test10");
116         chart10.addPlot("default", {type: "Markers", shadows: {dx: 2, dy: 2, dw: 2}});
117         chart10.addSeries("Series A", [1, 2, 1, 2, 1, 2, 1], {min: 0, max: 3, stroke: {color: "red", width: 2, join: "round"}, marker: "m-3,0 c0,-4 6,-4 6,0 m-6,0 c0,4 6,4 6,0"});
118         chart10.addSeries("Series B", [2, 1, 2, 1, 2, 1, 2], {stroke: {color: "blue", width: 2, join: "round"}, marker: "m-3,-3 l0,6 6,0 0,-6 z"});
119         chart10.render();
120
121         var chart11 = new dojox.charting.Chart2D("test11");
122         chart11.addPlot("default", {type: "StackedLines", markers: true, tension:3, shadows: {dx: 2, dy: 2, dw: 2}});
123         chart11.addSeries("Series A", [1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6], {stroke: {color: "red", width: 2}, fill: "lightpink", marker: "m-3,-3 l0,6 6,0 0,-6 z"});
124         chart11.addSeries("Series B", [1, 1.6, 1.3, 1.4, 1.1, 1.5, 1.1], {stroke: {color: "blue", width: 2}, fill: "lightblue", marker: "m-3,0 c0,-4 6,-4 6,0 m-6,0 c0,4 6,4 6,0"});
125         chart11.addSeries("Series C", [1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6], {stroke: {color: "green", width: 2}, fill: "lightgreen", marker: "m0,-3 l3,3 -3,3 -3,-3 z"});
126         chart11.render();
127
128         var chart12 = new dojox.charting.Chart2D("test12");
129         chart12.addAxis("x", {fixLower: "major", fixUpper: "major"});
130         chart12.addAxis("y", {vertical: true, fixLower: "major", fixUpper: "major"});
131         chart12.addPlot("default", {type: "StackedAreas", tension:3});
132         chart12.addSeries("Series A", [1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6], {stroke: {color: "red", width: 2}, fill: "lightpink"});
133         chart12.addSeries("Series B", [1, 1.6, 1.3, 1.4, 1.1, 1.5, 1.1], {stroke: {color: "blue", width: 2}, fill: "lightblue"});
134         chart12.addSeries("Series C", [1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6], {stroke: {color: "green", width: 2}, fill: "lightgreen"});
135         chart12.render();
136
137         var chart13 = new dojox.charting.Chart2D("test13");
138         chart13.addPlot("default", {type: "Columns"});
139         chart13.addSeries("Series A", [1, 2, 3, 4, 5], {stroke: {color: "red"}, fill: "lightpink"});
140         chart13.addSeries("Series B", [5, 4, 3, 2, 1], {stroke: {color: "blue"}, fill: "lightblue"});
141         chart13.render();
142
143         var chart14 = new dojox.charting.Chart2D("test14");
144         chart14.addAxis("y", {vertical: true, fixLower: "major", fixUpper: "major"});
145         chart14.addPlot("default", {type: "Columns", gap: 2});
146         chart14.addSeries("Series A", [1, 2, 3, 4, 5], {stroke: {color: "red"}, fill: "lightpink"});
147         chart14.addSeries("Series B", [5, 4, 3, 2, 1], {stroke: {color: "blue"}, fill: "lightblue"});
148         chart14.render();
149
150         var chart15 = new dojox.charting.Chart2D("test15");
151         chart15.addPlot("default", {type: "StackedColumns"});
152         chart15.addSeries("Series A", [1, 2, 3, 4, 5], {stroke: {color: "red"}, fill: "lightpink"});
153         chart15.addSeries("Series B", [2, 1, 2, 1, 2], {stroke: {color: "blue"}, fill: "lightblue"});
154         chart15.render();
155
156         var chart16 = new dojox.charting.Chart2D("test16");
157         chart16.addAxis("x", {fixLower: "major", fixUpper: "major", includeZero: true});
158         chart16.addAxis("y", {vertical: true, fixLower: "major", fixUpper: "major", natural: true});
159         chart16.addPlot("default", {type: "Bars"});
160         chart16.addSeries("Series A", [1, 2, 3, 4, 5], {stroke: {color: "red"}, fill: "lightpink"});
161         chart16.addSeries("Series B", [5, 4, 3, 2, 1], {stroke: {color: "blue"}, fill: "lightblue"});
162         chart16.render();
163
164         var chart17 = new dojox.charting.Chart2D("test17");
165         chart17.addPlot("default", {type: "StackedBars"});
166         chart17.addSeries("Series A", [1, 2, 3, 4, 5], {stroke: {color: "red"}, fill: "lightpink"});
167         chart17.addSeries("Series B", [2, 1, 2, 1, 2], {stroke: {color: "blue"}, fill: "lightblue"});
168         chart17.render();
169
170         var chart18 = new dojox.charting.Chart2D("test18");
171         chart18.addAxis("x", {fixLower: "minor", fixUpper: "minor", natural: true});
172         chart18.addAxis("y", {vertical: true, fixLower: "major", fixUpper: "major", includeZero: true});
173         chart18.addPlot("default", {type: "ClusteredColumns", gap: 10});
174         chart18.addSeries("Series A", [1, 2, 3, 4, 5], {stroke: {color: "red"}, fill: "lightpink"});
175         chart18.addSeries("Series B", [5, 4, 3, 2, 1], {stroke: {color: "blue"}, fill: "lightblue"});
176         chart18.render();
177
178         var chart19 = new dojox.charting.Chart2D("test19");
179         chart19.addAxis("x", {fixLower: "major", fixUpper: "major", includeZero: true});
180         chart19.addAxis("y", {vertical: true, fixLower: "minor", fixUpper: "minor", natural: true});
181         chart19.addPlot("default", {type: "ClusteredBars", gap: 5});
182         chart19.addSeries("Series A", [1, 2, 3, 4, 5], {stroke: {color: "red"}, fill: "lightpink"});
183         chart19.addSeries("Series B", [5, 4, 3, 2, 1], {stroke: {color: "blue"}, fill: "lightblue"});
184         chart19.render();
185
186         var chart20 = new dojox.charting.Chart2D("test20");
187         chart20.addAxis("x", {fixLower: "minor", fixUpper: "minor", natural: true});
188         chart20.addAxis("y", {vertical: true, fixLower: "major", fixUpper: "major", minorTicks: false, includeZero: true});
189         chart20.addPlot("front_grid", {type: "Grid", hMajorLines: true, vMajorLines: false});
190         chart20.addPlot("default", {type: "Columns", gap: 10});
191         chart20.addPlot("back_grid", {type: "Grid", hMajorLines: false, vMajorLines: true});
192         chart20.addSeries("Series A", [1, 2, 3, 4, 5], {stroke: {color: "red"}, fill: "lightpink"});
193         chart20.addSeries("Series B", [5, 4, 3, 2, 1], {stroke: {color: "blue"}, fill: "lightblue"});
194         chart20.render();
195
196         var chart21 = new dojox.charting.Chart2D("test21");
197         chart21.addAxis("x", {fixLower: "minor", fixUpper: "minor", natural: true});
198         chart21.addAxis("y", {vertical: true, fixLower: "major", fixUpper: "major", 
199                 includeZero: true, min: 0, max: 8, minorLabels: false,
200                 majorTicks: true, minorTicks: true, microTicks: false, 
201                 majorTickStep: 2, minorTickStep: 1, microTickStep: 0.5});
202         chart21.addPlot("front_grid", {type: "Grid", hMajorLines: true, vMajorLines: false});
203         chart21.addPlot("default", {type: "Columns", gap: 10});
204         chart21.addPlot("back_grid", {type: "Grid", hMajorLines: false, vMajorLines: true});
205         chart21.addSeries("Series A", [1, 2, 3, 4, 5], {stroke: {color: "red"}, fill: "lightpink"});
206         chart21.addSeries("Series B", [5, 4, 3, 2, 1], {stroke: {color: "blue"}, fill: "lightblue"});
207         chart21.render();
208
209         var chart22 = new dojox.charting.Chart2D("test22");
210         chart22.addAxis("x");
211         chart22.addAxis("y", {vertical: true});
212         chart22.addPlot("default", {type: "Columns", gap: 10});
213         chart22.addPlot("grid", {type: "Grid"});
214         chart22.addSeries("Series A", [2, 1, 0.5, -1, -2], {stroke: {color: "red"}, fill: "lightpink"});
215         chart22.addSeries("Series B", [-2, -1, -0.5, 1, 2], {stroke: {color: "blue"}, fill: "lightblue"});
216         chart22.render();
217
218         var chart23 = new dojox.charting.Chart2D("test23");
219         chart23.addAxis("x");
220         chart23.addAxis("y", {vertical: true});
221         chart23.addPlot("default", {type: "ClusteredColumns", gap: 10});
222         chart23.addPlot("grid", {type: "Grid"});
223         chart23.addSeries("Series A", [2, 1, 0.5, -1, -2], {stroke: {color: "red"}, fill: "lightpink"});
224         chart23.addSeries("Series B", [-2, -1, -0.5, 1, 2], {stroke: {color: "blue"}, fill: "lightblue"});
225         chart23.addSeries("Series C", [1, 0.5, -1, -2, -3], {stroke: {color: "green"}, fill: "lightgreen"});
226         chart23.render();
227
228         var chart24 = new dojox.charting.Chart2D("test24");
229         chart24.addAxis("x");
230         chart24.addAxis("y", {vertical: true});
231         chart24.addPlot("default", {type: "Bars", gap: 10});
232         chart24.addPlot("grid", {type: "Grid"});
233         chart24.addSeries("Series A", [2, 1, 0.5, -1, -2], {stroke: {color: "red"}, fill: "lightpink"});
234         chart24.addSeries("Series B", [-2, -1, -0.5, 1, 2], {stroke: {color: "blue"}, fill: "lightblue"});
235         chart24.render();
236
237         var chart25 = new dojox.charting.Chart2D("test25");
238         chart25.addAxis("x");
239         chart25.addAxis("y", {vertical: true});
240         chart25.addPlot("default", {type: "ClusteredBars", gap: 10});
241         chart25.addPlot("grid", {type: "Grid"});
242         chart25.addSeries("Series A", [2, 1, 0.5, -1, -2], {stroke: {color: "red"}, fill: "lightpink"});
243         chart25.addSeries("Series B", [-2, -1, -0.5, 1, 2], {stroke: {color: "blue"}, fill: "lightblue"});
244         chart25.addSeries("Series C", [1, 0.5, -1, -2, -3], {stroke: {color: "green"}, fill: "lightgreen"});
245         chart25.render();
246
247         var chart26 = new dojox.charting.Chart2D("test26");
248         chart26.setTheme(dojox.charting.themes.PlotKit.red);
249         chart26.addAxis("x", {min: 0, max: 6, majorTick: {stroke: "black", length: 3}, minorTick: {stroke: "gray", length: 3}});
250         chart26.addAxis("y", {vertical: true, min: 0, max: 10, majorTick: {stroke: "black", length: 3}, minorTick: {stroke: "gray", length: 3}});
251         chart26.addSeries("Series A", [{x: 0.5, y: 5}, {x: 1.5, y: 1.5}, {x: 2, y: 9}, {x: 5, y: 0.3}]);
252         chart26.addSeries("Series B", [{x: 0.3, y: 8}, {x: 4, y: 6}, {x: 5.5, y: 2}]);
253         chart26.render();
254
255         var chart27 = new dojox.charting.Chart2D("test27");
256         chart27.setTheme(dojox.charting.themes.PlotKit.purple);
257         chart27.addPlot("default", {type: "Scatter"});
258         chart27.addAxis("x", {min: 0, max: 6, majorTick: {stroke: "black", length: 3}, minorTick: {stroke: "gray", length: 3}});
259         chart27.addAxis("y", {vertical: true, min: 0, max: 10, majorTick: {stroke: "black", length: 3}, minorTick: {stroke: "gray", length: 3}});
260         chart27.addSeries("Series A", [{x: 0.5, y: 5}, {x: 1.5, y: 1.5}, {x: 2, y: 9}, {x: 5, y: 0.3}]);
261         chart27.addSeries("Series B", [{x: 0.3, y: 8}, {x: 4, y: 6}, {x: 5.5, y: 2}]);
262         chart27.render();
263
264         var chart28 = new dojox.charting.Chart2D("test28");
265         chart28.setTheme(dojox.charting.themes.PlotKit.blue);
266         chart28.addPlot("default", {type: "Default", lines: true, markers: true, tension:2});
267         chart28.addAxis("x", {min: 0, max: 6, majorTick: {stroke: "black", length: 3}, minorTick: {stroke: "gray", length: 3}});
268         chart28.addAxis("y", {vertical: true, min: 0, max: 10, majorTick: {stroke: "black", length: 3}, minorTick: {stroke: "gray", length: 3}});
269         chart28.addSeries("Series A", [{x: 0.5, y: 5}, {x: 1.5, y: 1.5}, {x: 2, y: 9}, {x: 5, y: 0.3}]);
270         chart28.addSeries("Series B", [{x: 0.3, y: 8}, {x: 4, y: 6}, {x: 5.5, y: 2}]);
271         chart28.render();
272
273         var chart29 = new dojox.charting.Chart2D("test29");
274         chart29.setTheme(dojox.charting.themes.ET.greys);
275         chart29.addAxis("x", {fixLower: "minor", fixUpper: "minor", natural: true});
276         chart29.addAxis("y", {vertical: true, fixLower: "major", fixUpper: "major", includeZero: true});
277         chart29.addPlot("default", {type: "ClusteredColumns", gap: 10});
278         chart29.addSeries("Series A", [2, 1, 0.5, -1, -2] );
279         chart29.addSeries("Series B", [-2, -1, -0.5, 1, 2] );
280         chart29.addSeries("Series C", [1, 0.5, -1, -2, -3] );
281         chart29.addSeries("Series D", [0.7, 1.5, -1.2, -1.25, 3] );
282         chart29.render();
283
284 };
285
286 dojo.addOnLoad(makeObjects);
287
288 </script>
289 </head>
290 <body>
291 <h1>Chart 2D</h1>
292 <!--<p><button onclick="makeObjects();">Go</button></p>-->
293 <p>1: Defaults: lines, no axes.</p>
294 <div id="test1" style="width: 400px; height: 200px;"></div>
295 <p>2: Defaults: lines, no axes, and custom strokes.</p>
296 <div id="test2" style="width: 200px; height: 200px;"></div>
297 <p>3: Areas, orange theme, no axes.</p>
298 <div id="test3" style="width: 400px; height: 400px;"></div>
299 <p>4: Areas, no axes, custom strokes and fills.</p>
300 <div id="test4" style="width: 400px; height: 200px;"></div>
301 <p>5: Lines, axes, blue theme.</p>
302 <div id="test5" style="width: 400px; height: 200px;"></div>
303 <p>6: Lines, axes (aligned on minor ticks), cyan theme.</p>
304 <div id="test6" style="width: 400px; height: 200px;"></div>
305 <p>7: Lines, axes (aligned on major ticks), green theme.</p>
306 <div id="test7" style="width: 400px; height: 200px;"></div>
307 <p>8: Lines and markers, no axes, purple theme, custom min/max.</p>
308 <div id="test8" style="width: 400px; height: 200px;"></div>
309 <p>9: Markers only, no axes, custom theme, custom markers, custom min/max.</p>
310 <div id="test9" style="width: 400px; height: 200px;"></div>
311 <p>10: Lines and markers, shadows, no axes, custom theme, custom markers, custom min/max.</p>
312 <div id="test10" style="width: 400px; height: 200px;"></div>
313 <p>11: Stacked lines, markers, shadows, no axes, custom strokes, fills, and markers.</p>
314 <div id="test11" style="width: 200px; height: 200px;"></div>
315 <p>12: Stacked areas, axes (aligned on major ticks), custom strokes and fills.</p>
316 <div id="test12" style="width: 400px; height: 200px;"></div>
317 <p>13: Columns, no axes, custom strokes and fills.</p>
318 <div id="test13" style="width: 400px; height: 200px;"></div>
319 <p>14: Columns with gaps beetwen them, vertical axis aligned on major ticks, custom strokes, fills.</p>
320 <div id="test14" style="width: 400px; height: 200px;"></div>
321 <p>15: Stacked columns, no axes, custom strokes and fills.</p>
322 <div id="test15" style="width: 400px; height: 200px;"></div>
323 <p>16: Bars, axes aligned on major ticks, no minor ticks, custom strokes and fills.</p>
324 <div id="test16" style="width: 400px; height: 200px;"></div>
325 <p>17: Stacked bars, no axes, custom strokes and fills.</p>
326 <div id="test17" style="width: 400px; height: 200px;"></div>
327 <p>18: Clustered columns, custom axes, custom strokes, fills, and gap.</p>
328 <div id="test18" style="width: 400px; height: 200px;"></div>
329 <p>19: Clustered bars, custom axes, custom strokes, fills, and gap.</p>
330 <div id="test19" style="width: 400px; height: 200px;"></div>
331 <p>20: Columns with gaps beetwen them, grids, custom strokes, fills, axes.</p>
332 <div id="test20" style="width: 400px; height: 200px;"></div>
333 <p>21: Columns with gaps beetwen them, grids, custom strokes, fills, axes, with min=0, max=8, and manually specified ticks on the vertical axis.</p>
334 <div id="test21" style="width: 400px; height: 200px;"></div>
335 <p>22: Columns with positive and negative values, axes, and grid.</p>
336 <div id="test22" style="width: 400px; height: 200px;"></div>
337 <p>23: Clustered columns with positive and negative values, axes, and grid.</p>
338 <div id="test23" style="width: 400px; height: 200px;"></div>
339 <p>24: Bars with positive and negative values, axes, and grid.</p>
340 <div id="test24" style="width: 400px; height: 200px;"></div>
341 <p>25: Clustered bars with positive and negative values, axes, and grid.</p>
342 <div id="test25" style="width: 400px; height: 200px;"></div>
343 <p>26: Default lines with 2D data, custom axis, red theme.</p>
344 <div id="test26" style="width: 400px; height: 200px;"></div>
345 <p>27: Scatter chart, custom axis, purple theme.</p>
346 <div id="test27" style="width: 400px; height: 200px;"></div>
347 <p>28: Markers, lines, 2D data, custom axis, blue theme.</p>
348 <div id="test28" style="width: 400px; height: 200px;"></div>
349 <p>29: Clustered columns with positive and negative values, readable theme.</p>
350 <div id="test29" style="width: 500px; height: 300px;"></div>
351 <p>That's all Folks!</p>
352 </body>
353 </html>