diff --git a/avenger-vega-test-data/vega-scenegraphs/text/lasagna_plot.png b/avenger-vega-test-data/vega-scenegraphs/text/lasagna_plot.png new file mode 100644 index 0000000..32ec9cc Binary files /dev/null and b/avenger-vega-test-data/vega-scenegraphs/text/lasagna_plot.png differ diff --git a/avenger-vega-test-data/vega-scenegraphs/text/lasagna_plot.sg.json b/avenger-vega-test-data/vega-scenegraphs/text/lasagna_plot.sg.json new file mode 100644 index 0000000..77ba43b --- /dev/null +++ b/avenger-vega-test-data/vega-scenegraphs/text/lasagna_plot.sg.json @@ -0,0 +1,6934 @@ +{ + "width": 399, + "height": 142, + "origin": [ + 41, + 5 + ], + "scenegraph": { + "clip": false, + "interactive": true, + "items": [ + { + "items": [ + { + "clip": false, + "interactive": false, + "items": [ + { + "items": [ + { + "clip": false, + "interactive": false, + "items": [ + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 1 + }, + { + "opacity": 1, + "stroke": "black", + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 3 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 6 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 8 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 10 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 13 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 15 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 18 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 20 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 23 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 25 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 28 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 30 + }, + { + "opacity": 1, + "stroke": "black", + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 32 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 35 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 37 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 40 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 42 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 45 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 47 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 50 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 52 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 54 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 57 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 59 + }, + { + "opacity": 1, + "stroke": "black", + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 62 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 64 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 67 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 69 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 71 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 74 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 76 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 79 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 81 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 84 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 86 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 89 + }, + { + "opacity": 1, + "stroke": "black", + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 91 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 93 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 96 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 98 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 101 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 103 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 106 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 108 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 110 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 113 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 115 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 118 + }, + { + "opacity": 1, + "stroke": "black", + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 120 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 123 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 125 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 128 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 130 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 132 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 135 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 137 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 140 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 142 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 145 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 147 + }, + { + "opacity": 1, + "stroke": "black", + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 150 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 152 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 154 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 157 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 159 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 162 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 164 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 167 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 169 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 171 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 174 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 176 + }, + { + "opacity": 1, + "stroke": "black", + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 179 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 181 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 184 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 186 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 189 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 191 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 193 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 196 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 198 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 201 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 203 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 206 + }, + { + "opacity": 1, + "stroke": "black", + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 208 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 210 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 213 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 215 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 218 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 220 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 223 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 225 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 228 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 230 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 232 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 235 + }, + { + "opacity": 1, + "stroke": "black", + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 237 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 240 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 242 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 245 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 247 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 250 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 252 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 254 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 257 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 259 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 262 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 264 + }, + { + "opacity": 1, + "stroke": "black", + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 267 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 269 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 271 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 274 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 276 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 279 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 281 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 284 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 286 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 289 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 291 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 293 + }, + { + "opacity": 1, + "stroke": "black", + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 296 + }, + { + "opacity": 1, + "stroke": null, + "strokeWidth": 1, + "y": 0, + "y2": 5, + "x": 298 + } + ], + "marktype": "rule", + "role": "axis-tick", + "zindex": 0 + }, + { + "clip": false, + "interactive": false, + "items": [ + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 0.7195121951219512, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2000", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 3.1585365853658534, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2000", + "align": "center", + "baseline": "top", + "fill": "black" + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 5.597560975609756, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2000", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 8.036585365853657, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2000", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 10.47560975609756, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2000", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 12.914634146341463, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2000", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 15.353658536585364, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2000", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 17.79268292682927, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2000", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 20.23170731707317, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2000", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 22.67073170731707, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2000", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 25.109756097560975, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2000", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 27.548780487804876, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2000", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 29.987804878048777, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2001", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 32.426829268292686, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2001", + "align": "center", + "baseline": "top", + "fill": "black" + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 34.86585365853659, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2001", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 37.30487804878049, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2001", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 39.74390243902439, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2001", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 42.18292682926829, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2001", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 44.62195121951219, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2001", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 47.0609756097561, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2001", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 49.5, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2001", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 51.9390243902439, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2001", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 54.3780487804878, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2001", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 56.8170731707317, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2001", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 59.256097560975604, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2002", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 61.69512195121951, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2002", + "align": "center", + "baseline": "top", + "fill": "black" + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 64.13414634146342, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2002", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 66.57317073170732, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2002", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 69.01219512195122, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2002", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 71.45121951219512, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2002", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 73.89024390243902, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2002", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 76.32926829268293, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2002", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 78.76829268292683, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2002", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 81.20731707317073, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2002", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 83.64634146341463, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2002", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 86.08536585365853, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2002", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 88.52439024390243, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2003", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 90.96341463414633, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2003", + "align": "center", + "baseline": "top", + "fill": "black" + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 93.40243902439025, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2003", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 95.84146341463415, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2003", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 98.28048780487805, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2003", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 100.71951219512195, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2003", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 103.15853658536585, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2003", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 105.59756097560975, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2003", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 108.03658536585365, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2003", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 110.47560975609755, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2003", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 112.91463414634146, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2003", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 115.35365853658536, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2003", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 117.79268292682926, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2004", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 120.23170731707317, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2004", + "align": "center", + "baseline": "top", + "fill": "black" + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 122.67073170731707, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2004", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 125.10975609756098, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2004", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 127.54878048780489, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2004", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 129.98780487804876, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2004", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 132.4268292682927, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2004", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 134.8658536585366, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2004", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 137.3048780487805, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2004", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 139.7439024390244, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2004", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 142.1829268292683, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2004", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 144.6219512195122, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2004", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 147.0609756097561, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2005", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 149.5, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2005", + "align": "center", + "baseline": "top", + "fill": "black" + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 151.9390243902439, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2005", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 154.3780487804878, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2005", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 156.8170731707317, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2005", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 159.2560975609756, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2005", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 161.6951219512195, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2005", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 164.1341463414634, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2005", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 166.5731707317073, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2005", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 169.0121951219512, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2005", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 171.4512195121951, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2005", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 173.890243902439, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2005", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 176.3292682926829, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2006", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 178.7682926829268, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2006", + "align": "center", + "baseline": "top", + "fill": "black" + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 181.2073170731707, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2006", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 183.64634146341464, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2006", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 186.08536585365854, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2006", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 188.52439024390245, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2006", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 190.96341463414635, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2006", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 193.40243902439025, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2006", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 195.84146341463415, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2006", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 198.28048780487805, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2006", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 200.71951219512195, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2006", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 203.15853658536585, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2006", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 205.59756097560975, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2007", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 208.03658536585365, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2007", + "align": "center", + "baseline": "top", + "fill": "black" + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 210.47560975609755, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2007", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 212.91463414634146, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2007", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 215.35365853658536, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2007", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 217.79268292682926, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2007", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 220.23170731707316, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2007", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 222.67073170731706, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2007", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 225.10975609756096, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2007", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 227.54878048780486, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2007", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 229.98780487804876, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2007", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 232.42682926829266, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2007", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 234.86585365853657, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2008", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 237.3048780487805, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2008", + "align": "center", + "baseline": "top", + "fill": "black" + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 239.7439024390244, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2008", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 242.1829268292683, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2008", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 244.6219512195122, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2008", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 247.0609756097561, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2008", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 249.5, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2008", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 251.9390243902439, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2008", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 254.3780487804878, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2008", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 256.8170731707317, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2008", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 259.2560975609756, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2008", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 261.69512195121956, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2008", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 264.13414634146346, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2009", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 266.57317073170736, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2009", + "align": "center", + "baseline": "top", + "fill": "black" + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 269.01219512195127, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2009", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 271.45121951219517, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2009", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 273.89024390243907, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2009", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 276.32926829268297, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2009", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 278.76829268292687, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2009", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 281.20731707317077, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2009", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 283.6463414634147, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2009", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 286.0853658536586, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2009", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 288.5243902439025, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2009", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 290.9634146341464, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2009", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 293.4024390243903, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2010", + "align": "center", + "baseline": "top", + "fill": null + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 295.8414634146342, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2010", + "align": "center", + "baseline": "top", + "fill": "black" + }, + { + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": 298.2804878048781, + "y": 7, + "angle": 0, + "limit": 180, + "text": "2010", + "align": "center", + "baseline": "top", + "fill": null + } + ], + "marktype": "text", + "role": "axis-label", + "zindex": 0 + }, + { + "clip": false, + "interactive": false, + "items": [ + { + "opacity": 1, + "stroke": "#888", + "strokeWidth": 1, + "x": 0, + "x2": 300, + "y": 0 + } + ], + "marktype": "rule", + "role": "axis-domain", + "zindex": 0 + }, + { + "clip": false, + "interactive": false, + "items": [ + { + "fill": "#000", + "font": "sans-serif", + "fontSize": 11, + "fontWeight": "bold", + "opacity": 1, + "align": "center", + "angle": 0, + "baseline": "top", + "text": "Time", + "x": 150, + "y": 21 + } + ], + "marktype": "text", + "role": "axis-title", + "zindex": 0 + } + ], + "orient": "bottom", + "offset": 0, + "x": 0.5, + "y": 100.5 + } + ], + "marktype": "group", + "role": "axis", + "zindex": 1 + }, + { + "clip": false, + "interactive": false, + "items": [ + { + "items": [ + { + "clip": false, + "interactive": false, + "items": [ + { + "opacity": 1, + "stroke": "#888", + "strokeWidth": 1, + "y": 12, + "x": 0, + "x2": -5 + }, + { + "opacity": 1, + "stroke": "#888", + "strokeWidth": 1, + "y": 37, + "x": 0, + "x2": -5 + }, + { + "opacity": 1, + "stroke": "#888", + "strokeWidth": 1, + "y": 62, + "x": 0, + "x2": -5 + }, + { + "opacity": 1, + "stroke": "#888", + "strokeWidth": 1, + "y": 87, + "x": 0, + "x2": -5 + } + ], + "marktype": "rule", + "role": "axis-tick", + "zindex": 0 + }, + { + "clip": false, + "interactive": false, + "items": [ + { + "fill": "#000", + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": -7, + "y": 12, + "angle": 0, + "limit": 180, + "text": "AAPL", + "align": "right", + "baseline": "middle" + }, + { + "fill": "#000", + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": -7, + "y": 37, + "angle": 0, + "limit": 180, + "text": "AMZN", + "align": "right", + "baseline": "middle" + }, + { + "fill": "#000", + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": -7, + "y": 62, + "angle": 0, + "limit": 180, + "text": "IBM", + "align": "right", + "baseline": "middle" + }, + { + "fill": "#000", + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "x": -7, + "y": 87, + "angle": 0, + "limit": 180, + "text": "MSFT", + "align": "right", + "baseline": "middle" + } + ], + "marktype": "text", + "role": "axis-label", + "zindex": 0 + }, + { + "clip": false, + "interactive": false, + "items": [ + { + "opacity": 1, + "stroke": "#888", + "strokeWidth": 1, + "x": 0, + "y": 0, + "y2": 100 + } + ], + "marktype": "rule", + "role": "axis-domain", + "zindex": 0 + } + ], + "orient": "left", + "offset": 0, + "x": 0.5, + "y": 0.5 + } + ], + "marktype": "group", + "role": "axis", + "zindex": 1 + }, + { + "clip": false, + "interactive": true, + "items": [ + { + "fill": "rgb(202, 234, 181)", + "description": "Time: 2000; symbol: MSFT; Price: 39.81", + "x": 0, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(207, 236, 180)", + "description": "Time: 2000; symbol: MSFT; Price: 36.35", + "x": 2.4390243902439024, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(198, 232, 181)", + "description": "Time: 2000; symbol: MSFT; Price: 43.22", + "x": 4.878048780487805, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(218, 241, 180)", + "description": "Time: 2000; symbol: MSFT; Price: 28.37", + "x": 7.317073170731707, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(221, 242, 181)", + "description": "Time: 2000; symbol: MSFT; Price: 25.45", + "x": 9.75609756097561, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(212, 238, 180)", + "description": "Time: 2000; symbol: MSFT; Price: 32.54", + "x": 12.195121951219512, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(218, 241, 180)", + "description": "Time: 2000; symbol: MSFT; Price: 28.4", + "x": 14.634146341463413, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(218, 241, 180)", + "description": "Time: 2000; symbol: MSFT; Price: 28.4", + "x": 17.073170731707318, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(222, 242, 181)", + "description": "Time: 2000; symbol: MSFT; Price: 24.53", + "x": 19.51219512195122, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(219, 241, 180)", + "description": "Time: 2000; symbol: MSFT; Price: 28.02", + "x": 21.95121951219512, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 243, 182)", + "description": "Time: 2000; symbol: MSFT; Price: 23.34", + "x": 24.390243902439025, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(228, 245, 184)", + "description": "Time: 2000; symbol: MSFT; Price: 17.65", + "x": 26.829268292682926, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(222, 242, 181)", + "description": "Time: 2001; symbol: MSFT; Price: 24.84", + "x": 29.268292682926827, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(222, 242, 182)", + "description": "Time: 2001; symbol: MSFT; Price: 24", + "x": 31.70731707317073, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2001; symbol: MSFT; Price: 22.25", + "x": 34.146341463414636, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(219, 241, 180)", + "description": "Time: 2001; symbol: MSFT; Price: 27.56", + "x": 36.58536585365854, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(218, 241, 180)", + "description": "Time: 2001; symbol: MSFT; Price: 28.14", + "x": 39.02439024390244, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(216, 240, 180)", + "description": "Time: 2001; symbol: MSFT; Price: 29.7", + "x": 41.46341463414634, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(220, 241, 180)", + "description": "Time: 2001; symbol: MSFT; Price: 26.93", + "x": 43.90243902439024, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 243, 182)", + "description": "Time: 2001; symbol: MSFT; Price: 23.21", + "x": 46.34146341463415, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 244, 183)", + "description": "Time: 2001; symbol: MSFT; Price: 20.82", + "x": 48.78048780487805, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 242, 182)", + "description": "Time: 2001; symbol: MSFT; Price: 23.65", + "x": 51.21951219512195, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(220, 242, 181)", + "description": "Time: 2001; symbol: MSFT; Price: 26.12", + "x": 53.65853658536585, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(220, 241, 180)", + "description": "Time: 2001; symbol: MSFT; Price: 26.95", + "x": 56.09756097560975, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(221, 242, 181)", + "description": "Time: 2002; symbol: MSFT; Price: 25.92", + "x": 58.536585365853654, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 242, 182)", + "description": "Time: 2002; symbol: MSFT; Price: 23.73", + "x": 60.97560975609756, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(222, 242, 181)", + "description": "Time: 2002; symbol: MSFT; Price: 24.53", + "x": 63.41463414634146, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 243, 183)", + "description": "Time: 2002; symbol: MSFT; Price: 21.26", + "x": 65.85365853658537, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 244, 183)", + "description": "Time: 2002; symbol: MSFT; Price: 20.71", + "x": 68.29268292682927, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2002; symbol: MSFT; Price: 22.25", + "x": 70.73170731707317, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(227, 244, 183)", + "description": "Time: 2002; symbol: MSFT; Price: 19.52", + "x": 73.17073170731707, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(226, 244, 183)", + "description": "Time: 2002; symbol: MSFT; Price: 19.97", + "x": 75.60975609756098, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(228, 245, 184)", + "description": "Time: 2002; symbol: MSFT; Price: 17.79", + "x": 78.04878048780488, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2002; symbol: MSFT; Price: 21.75", + "x": 80.48780487804878, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 243, 182)", + "description": "Time: 2002; symbol: MSFT; Price: 23.46", + "x": 82.92682926829268, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 243, 183)", + "description": "Time: 2002; symbol: MSFT; Price: 21.03", + "x": 85.36585365853658, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(227, 244, 183)", + "description": "Time: 2003; symbol: MSFT; Price: 19.31", + "x": 87.80487804878048, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(227, 244, 183)", + "description": "Time: 2003; symbol: MSFT; Price: 19.34", + "x": 90.24390243902438, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(226, 244, 183)", + "description": "Time: 2003; symbol: MSFT; Price: 19.76", + "x": 92.6829268292683, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 244, 183)", + "description": "Time: 2003; symbol: MSFT; Price: 20.87", + "x": 95.1219512195122, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(226, 244, 183)", + "description": "Time: 2003; symbol: MSFT; Price: 20.09", + "x": 97.5609756097561, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 243, 183)", + "description": "Time: 2003; symbol: MSFT; Price: 20.93", + "x": 100, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 243, 183)", + "description": "Time: 2003; symbol: MSFT; Price: 21.56", + "x": 102.4390243902439, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 243, 182)", + "description": "Time: 2003; symbol: MSFT; Price: 21.65", + "x": 104.8780487804878, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2003; symbol: MSFT; Price: 22.69", + "x": 107.3170731707317, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 243, 183)", + "description": "Time: 2003; symbol: MSFT; Price: 21.45", + "x": 109.7560975609756, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 243, 183)", + "description": "Time: 2003; symbol: MSFT; Price: 21.1", + "x": 112.1951219512195, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2003; symbol: MSFT; Price: 22.46", + "x": 114.6341463414634, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2004; symbol: MSFT; Price: 22.69", + "x": 117.07317073170731, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2004; symbol: MSFT; Price: 21.77", + "x": 119.51219512195122, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(226, 244, 183)", + "description": "Time: 2004; symbol: MSFT; Price: 20.46", + "x": 121.95121951219512, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 243, 183)", + "description": "Time: 2004; symbol: MSFT; Price: 21.45", + "x": 124.39024390243902, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 243, 183)", + "description": "Time: 2004; symbol: MSFT; Price: 21.53", + "x": 126.82926829268293, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 243, 182)", + "description": "Time: 2004; symbol: MSFT; Price: 23.44", + "x": 129.2682926829268, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 243, 182)", + "description": "Time: 2004; symbol: MSFT; Price: 23.38", + "x": 131.70731707317074, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2004; symbol: MSFT; Price: 22.47", + "x": 134.14634146341464, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2004; symbol: MSFT; Price: 22.76", + "x": 136.58536585365854, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 243, 182)", + "description": "Time: 2004; symbol: MSFT; Price: 23.02", + "x": 139.02439024390245, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(222, 242, 181)", + "description": "Time: 2004; symbol: MSFT; Price: 24.6", + "x": 141.46341463414635, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(222, 242, 181)", + "description": "Time: 2004; symbol: MSFT; Price: 24.52", + "x": 143.90243902439025, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(222, 242, 181)", + "description": "Time: 2005; symbol: MSFT; Price: 24.11", + "x": 146.34146341463415, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 243, 182)", + "description": "Time: 2005; symbol: MSFT; Price: 23.15", + "x": 148.78048780487805, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2005; symbol: MSFT; Price: 22.24", + "x": 151.21951219512195, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 243, 182)", + "description": "Time: 2005; symbol: MSFT; Price: 23.28", + "x": 153.65853658536585, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 242, 182)", + "description": "Time: 2005; symbol: MSFT; Price: 23.82", + "x": 156.09756097560975, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 243, 182)", + "description": "Time: 2005; symbol: MSFT; Price: 22.93", + "x": 158.53658536585365, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 242, 182)", + "description": "Time: 2005; symbol: MSFT; Price: 23.64", + "x": 160.97560975609755, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(221, 242, 181)", + "description": "Time: 2005; symbol: MSFT; Price: 25.35", + "x": 163.41463414634146, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 242, 182)", + "description": "Time: 2005; symbol: MSFT; Price: 23.83", + "x": 165.85365853658536, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 242, 182)", + "description": "Time: 2005; symbol: MSFT; Price: 23.8", + "x": 168.29268292682926, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(221, 242, 181)", + "description": "Time: 2005; symbol: MSFT; Price: 25.71", + "x": 170.73170731707316, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(222, 242, 181)", + "description": "Time: 2005; symbol: MSFT; Price: 24.29", + "x": 173.17073170731706, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(220, 242, 181)", + "description": "Time: 2006; symbol: MSFT; Price: 26.14", + "x": 175.60975609756096, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(221, 242, 181)", + "description": "Time: 2006; symbol: MSFT; Price: 25.04", + "x": 178.04878048780486, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(221, 242, 181)", + "description": "Time: 2006; symbol: MSFT; Price: 25.36", + "x": 180.48780487804876, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2006; symbol: MSFT; Price: 22.5", + "x": 182.9268292682927, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 243, 183)", + "description": "Time: 2006; symbol: MSFT; Price: 21.19", + "x": 185.3658536585366, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2006; symbol: MSFT; Price: 21.8", + "x": 187.8048780487805, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2006; symbol: MSFT; Price: 22.51", + "x": 190.2439024390244, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(222, 242, 181)", + "description": "Time: 2006; symbol: MSFT; Price: 24.13", + "x": 192.6829268292683, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(221, 242, 181)", + "description": "Time: 2006; symbol: MSFT; Price: 25.68", + "x": 195.1219512195122, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(220, 241, 180)", + "description": "Time: 2006; symbol: MSFT; Price: 26.96", + "x": 197.5609756097561, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(219, 241, 180)", + "description": "Time: 2006; symbol: MSFT; Price: 27.66", + "x": 200, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(218, 241, 180)", + "description": "Time: 2006; symbol: MSFT; Price: 28.13", + "x": 202.4390243902439, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(217, 240, 180)", + "description": "Time: 2007; symbol: MSFT; Price: 29.07", + "x": 204.8780487804878, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(220, 241, 180)", + "description": "Time: 2007; symbol: MSFT; Price: 26.63", + "x": 207.3170731707317, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(220, 241, 181)", + "description": "Time: 2007; symbol: MSFT; Price: 26.35", + "x": 209.7560975609756, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(218, 241, 180)", + "description": "Time: 2007; symbol: MSFT; Price: 28.3", + "x": 212.1951219512195, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(217, 240, 180)", + "description": "Time: 2007; symbol: MSFT; Price: 29.11", + "x": 214.6341463414634, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(219, 241, 180)", + "description": "Time: 2007; symbol: MSFT; Price: 27.95", + "x": 217.0731707317073, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(219, 241, 180)", + "description": "Time: 2007; symbol: MSFT; Price: 27.5", + "x": 219.5121951219512, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(219, 241, 180)", + "description": "Time: 2007; symbol: MSFT; Price: 27.34", + "x": 221.9512195121951, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(218, 241, 180)", + "description": "Time: 2007; symbol: MSFT; Price: 28.04", + "x": 224.390243902439, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(209, 237, 180)", + "description": "Time: 2007; symbol: MSFT; Price: 35.03", + "x": 226.8292682926829, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(213, 239, 180)", + "description": "Time: 2007; symbol: MSFT; Price: 32.09", + "x": 229.2682926829268, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(210, 238, 180)", + "description": "Time: 2007; symbol: MSFT; Price: 34", + "x": 231.7073170731707, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(214, 239, 180)", + "description": "Time: 2008; symbol: MSFT; Price: 31.13", + "x": 234.14634146341461, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(220, 242, 181)", + "description": "Time: 2008; symbol: MSFT; Price: 26.07", + "x": 236.58536585365854, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(219, 241, 180)", + "description": "Time: 2008; symbol: MSFT; Price: 27.21", + "x": 239.02439024390245, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(219, 241, 180)", + "description": "Time: 2008; symbol: MSFT; Price: 27.34", + "x": 241.46341463414635, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(219, 241, 180)", + "description": "Time: 2008; symbol: MSFT; Price: 27.25", + "x": 243.90243902439025, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(220, 241, 180)", + "description": "Time: 2008; symbol: MSFT; Price: 26.47", + "x": 246.34146341463415, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(222, 242, 181)", + "description": "Time: 2008; symbol: MSFT; Price: 24.75", + "x": 248.78048780487805, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(220, 241, 181)", + "description": "Time: 2008; symbol: MSFT; Price: 26.36", + "x": 251.21951219512195, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(221, 242, 181)", + "description": "Time: 2008; symbol: MSFT; Price: 25.78", + "x": 253.65853658536585, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(225, 243, 183)", + "description": "Time: 2008; symbol: MSFT; Price: 21.57", + "x": 256.0975609756097, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(226, 244, 183)", + "description": "Time: 2008; symbol: MSFT; Price: 19.66", + "x": 258.5365853658536, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(227, 244, 184)", + "description": "Time: 2008; symbol: MSFT; Price: 18.91", + "x": 260.9756097560976, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(229, 245, 185)", + "description": "Time: 2009; symbol: MSFT; Price: 16.63", + "x": 263.4146341463415, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(230, 245, 185)", + "description": "Time: 2009; symbol: MSFT; Price: 15.81", + "x": 265.8536585365854, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(228, 245, 184)", + "description": "Time: 2009; symbol: MSFT; Price: 17.99", + "x": 268.2926829268293, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(226, 244, 183)", + "description": "Time: 2009; symbol: MSFT; Price: 19.84", + "x": 270.7317073170732, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(226, 244, 183)", + "description": "Time: 2009; symbol: MSFT; Price: 20.59", + "x": 273.1707317073171, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 243, 182)", + "description": "Time: 2009; symbol: MSFT; Price: 23.42", + "x": 275.609756097561, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(223, 243, 182)", + "description": "Time: 2009; symbol: MSFT; Price: 23.18", + "x": 278.0487804878049, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(222, 242, 181)", + "description": "Time: 2009; symbol: MSFT; Price: 24.43", + "x": 280.4878048780488, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(221, 242, 181)", + "description": "Time: 2009; symbol: MSFT; Price: 25.49", + "x": 282.9268292682927, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(219, 241, 180)", + "description": "Time: 2009; symbol: MSFT; Price: 27.48", + "x": 285.3658536585366, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(217, 240, 180)", + "description": "Time: 2009; symbol: MSFT; Price: 29.27", + "x": 287.8048780487805, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(215, 240, 180)", + "description": "Time: 2009; symbol: MSFT; Price: 30.34", + "x": 290.2439024390244, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(218, 241, 180)", + "description": "Time: 2010; symbol: MSFT; Price: 28.05", + "x": 292.6829268292683, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(218, 240, 180)", + "description": "Time: 2010; symbol: MSFT; Price: 28.67", + "x": 295.1219512195122, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(217, 240, 180)", + "description": "Time: 2010; symbol: MSFT; Price: 28.8", + "x": 297.5609756097561, + "width": 2.4390243902439024, + "y": 75, + "height": 25 + }, + { + "fill": "rgb(160, 218, 184)", + "description": "Time: 2000; symbol: AMZN; Price: 64.56", + "x": 0, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(152, 215, 185)", + "description": "Time: 2000; symbol: AMZN; Price: 68.87", + "x": 2.4390243902439024, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(156, 216, 184)", + "description": "Time: 2000; symbol: AMZN; Price: 67", + "x": 4.878048780487805, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(178, 225, 182)", + "description": "Time: 2000; symbol: AMZN; Price: 55.19", + "x": 7.317073170731707, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(190, 230, 181)", + "description": "Time: 2000; symbol: AMZN; Price: 48.31", + "x": 9.75609756097561, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(207, 236, 180)", + "description": "Time: 2000; symbol: AMZN; Price: 36.31", + "x": 12.195121951219512, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(216, 240, 180)", + "description": "Time: 2000; symbol: AMZN; Price: 30.12", + "x": 14.634146341463413, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(200, 233, 181)", + "description": "Time: 2000; symbol: AMZN; Price: 41.5", + "x": 17.073170731707318, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(204, 235, 180)", + "description": "Time: 2000; symbol: AMZN; Price: 38.44", + "x": 19.51219512195122, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(207, 236, 180)", + "description": "Time: 2000; symbol: AMZN; Price: 36.62", + "x": 21.95121951219512, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(222, 242, 181)", + "description": "Time: 2000; symbol: AMZN; Price: 24.69", + "x": 24.390243902439025, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(230, 245, 185)", + "description": "Time: 2000; symbol: AMZN; Price: 15.56", + "x": 26.829268292682926, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(229, 245, 184)", + "description": "Time: 2001; symbol: AMZN; Price: 17.31", + "x": 29.268292682926827, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(235, 247, 187)", + "description": "Time: 2001; symbol: AMZN; Price: 10.19", + "x": 31.70731707317073, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(235, 247, 187)", + "description": "Time: 2001; symbol: AMZN; Price: 10.23", + "x": 34.146341463414636, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(230, 245, 185)", + "description": "Time: 2001; symbol: AMZN; Price: 15.78", + "x": 36.58536585365854, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(229, 245, 185)", + "description": "Time: 2001; symbol: AMZN; Price: 16.69", + "x": 39.02439024390244, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(231, 246, 186)", + "description": "Time: 2001; symbol: AMZN; Price: 14.15", + "x": 41.46341463414634, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(233, 247, 186)", + "description": "Time: 2001; symbol: AMZN; Price: 12.49", + "x": 43.90243902439024, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(236, 248, 188)", + "description": "Time: 2001; symbol: AMZN; Price: 8.94", + "x": 46.34146341463415, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(239, 249, 189)", + "description": "Time: 2001; symbol: AMZN; Price: 5.97", + "x": 48.78048780487805, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(238, 249, 189)", + "description": "Time: 2001; symbol: AMZN; Price: 6.98", + "x": 51.21951219512195, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(234, 247, 187)", + "description": "Time: 2001; symbol: AMZN; Price: 11.32", + "x": 53.65853658536585, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(235, 247, 187)", + "description": "Time: 2001; symbol: AMZN; Price: 10.82", + "x": 56.09756097560975, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(231, 246, 186)", + "description": "Time: 2002; symbol: AMZN; Price: 14.19", + "x": 58.536585365853654, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(232, 246, 186)", + "description": "Time: 2002; symbol: AMZN; Price: 14.1", + "x": 60.97560975609756, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(231, 246, 186)", + "description": "Time: 2002; symbol: AMZN; Price: 14.3", + "x": 63.41463414634146, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(229, 245, 185)", + "description": "Time: 2002; symbol: AMZN; Price: 16.69", + "x": 65.85365853658537, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(228, 244, 184)", + "description": "Time: 2002; symbol: AMZN; Price: 18.23", + "x": 68.29268292682927, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(230, 245, 185)", + "description": "Time: 2002; symbol: AMZN; Price: 16.25", + "x": 70.73170731707317, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(231, 246, 185)", + "description": "Time: 2002; symbol: AMZN; Price: 14.45", + "x": 73.17073170731707, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(231, 246, 185)", + "description": "Time: 2002; symbol: AMZN; Price: 14.94", + "x": 75.60975609756098, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(230, 245, 185)", + "description": "Time: 2002; symbol: AMZN; Price: 15.93", + "x": 78.04878048780488, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(227, 244, 183)", + "description": "Time: 2002; symbol: AMZN; Price: 19.36", + "x": 80.48780487804878, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(223, 243, 182)", + "description": "Time: 2002; symbol: AMZN; Price: 23.35", + "x": 82.92682926829268, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(227, 244, 184)", + "description": "Time: 2002; symbol: AMZN; Price: 18.89", + "x": 85.36585365853658, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2003; symbol: AMZN; Price: 21.85", + "x": 87.80487804878048, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(224, 243, 182)", + "description": "Time: 2003; symbol: AMZN; Price: 22.01", + "x": 90.24390243902438, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(221, 242, 181)", + "description": "Time: 2003; symbol: AMZN; Price: 26.03", + "x": 92.6829268292683, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(218, 240, 180)", + "description": "Time: 2003; symbol: AMZN; Price: 28.69", + "x": 95.1219512195122, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(208, 236, 180)", + "description": "Time: 2003; symbol: AMZN; Price: 35.89", + "x": 97.5609756097561, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(207, 236, 180)", + "description": "Time: 2003; symbol: AMZN; Price: 36.32", + "x": 100, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(200, 233, 181)", + "description": "Time: 2003; symbol: AMZN; Price: 41.64", + "x": 102.4390243902439, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(193, 231, 181)", + "description": "Time: 2003; symbol: AMZN; Price: 46.32", + "x": 104.8780487804878, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(190, 230, 181)", + "description": "Time: 2003; symbol: AMZN; Price: 48.43", + "x": 107.3170731707317, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(179, 225, 182)", + "description": "Time: 2003; symbol: AMZN; Price: 54.43", + "x": 109.7560975609756, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(180, 226, 182)", + "description": "Time: 2003; symbol: AMZN; Price: 53.97", + "x": 112.1951219512195, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(183, 227, 182)", + "description": "Time: 2003; symbol: AMZN; Price: 52.62", + "x": 114.6341463414634, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(187, 228, 181)", + "description": "Time: 2004; symbol: AMZN; Price: 50.4", + "x": 117.07317073170731, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(198, 233, 181)", + "description": "Time: 2004; symbol: AMZN; Price: 43.01", + "x": 119.51219512195122, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(197, 232, 181)", + "description": "Time: 2004; symbol: AMZN; Price: 43.28", + "x": 121.95121951219512, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(197, 232, 181)", + "description": "Time: 2004; symbol: AMZN; Price: 43.6", + "x": 124.39024390243902, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(190, 229, 181)", + "description": "Time: 2004; symbol: AMZN; Price: 48.5", + "x": 126.82926829268293, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(180, 225, 182)", + "description": "Time: 2004; symbol: AMZN; Price: 54.4", + "x": 129.2682926829268, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(203, 235, 181)", + "description": "Time: 2004; symbol: AMZN; Price: 38.92", + "x": 131.70731707317074, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(205, 235, 180)", + "description": "Time: 2004; symbol: AMZN; Price: 38.14", + "x": 134.14634146341464, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(201, 234, 181)", + "description": "Time: 2004; symbol: AMZN; Price: 40.86", + "x": 136.58536585365854, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(210, 237, 180)", + "description": "Time: 2004; symbol: AMZN; Price: 34.13", + "x": 139.02439024390245, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(202, 234, 181)", + "description": "Time: 2004; symbol: AMZN; Price: 39.68", + "x": 141.46341463414635, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(196, 232, 181)", + "description": "Time: 2004; symbol: AMZN; Price: 44.29", + "x": 143.90243902439025, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(198, 232, 181)", + "description": "Time: 2005; symbol: AMZN; Price: 43.22", + "x": 146.34146341463415, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(209, 237, 180)", + "description": "Time: 2005; symbol: AMZN; Price: 35.18", + "x": 148.78048780487805, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(210, 237, 180)", + "description": "Time: 2005; symbol: AMZN; Price: 34.27", + "x": 151.21951219512195, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(213, 238, 180)", + "description": "Time: 2005; symbol: AMZN; Price: 32.36", + "x": 153.65853658536585, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(208, 237, 180)", + "description": "Time: 2005; symbol: AMZN; Price: 35.51", + "x": 156.09756097560975, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(212, 238, 180)", + "description": "Time: 2005; symbol: AMZN; Price: 33.09", + "x": 158.53658536585365, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(195, 231, 181)", + "description": "Time: 2005; symbol: AMZN; Price: 45.15", + "x": 160.97560975609755, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(198, 233, 181)", + "description": "Time: 2005; symbol: AMZN; Price: 42.7", + "x": 163.41463414634146, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(195, 231, 181)", + "description": "Time: 2005; symbol: AMZN; Price: 45.3", + "x": 165.85365853658536, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(202, 234, 181)", + "description": "Time: 2005; symbol: AMZN; Price: 39.86", + "x": 168.29268292682926, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(190, 230, 181)", + "description": "Time: 2005; symbol: AMZN; Price: 48.46", + "x": 170.73170731707316, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(192, 230, 181)", + "description": "Time: 2005; symbol: AMZN; Price: 47.15", + "x": 173.17073170731706, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(195, 232, 181)", + "description": "Time: 2006; symbol: AMZN; Price: 44.82", + "x": 175.60975609756096, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(206, 236, 180)", + "description": "Time: 2006; symbol: AMZN; Price: 37.44", + "x": 178.04878048780486, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(207, 236, 180)", + "description": "Time: 2006; symbol: AMZN; Price: 36.53", + "x": 180.48780487804876, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(209, 237, 180)", + "description": "Time: 2006; symbol: AMZN; Price: 35.21", + "x": 182.9268292682927, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(209, 237, 180)", + "description": "Time: 2006; symbol: AMZN; Price: 34.61", + "x": 185.3658536585366, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(204, 235, 181)", + "description": "Time: 2006; symbol: AMZN; Price: 38.68", + "x": 187.8048780487805, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(220, 241, 180)", + "description": "Time: 2006; symbol: AMZN; Price: 26.89", + "x": 190.2439024390244, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(215, 239, 180)", + "description": "Time: 2006; symbol: AMZN; Price: 30.83", + "x": 192.6829268292683, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(213, 239, 180)", + "description": "Time: 2006; symbol: AMZN; Price: 32.12", + "x": 195.1219512195122, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(205, 235, 180)", + "description": "Time: 2006; symbol: AMZN; Price: 38.09", + "x": 197.5609756097561, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(201, 234, 181)", + "description": "Time: 2006; symbol: AMZN; Price: 40.34", + "x": 200, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(203, 234, 181)", + "description": "Time: 2006; symbol: AMZN; Price: 39.46", + "x": 202.4390243902439, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(205, 235, 180)", + "description": "Time: 2007; symbol: AMZN; Price: 37.67", + "x": 204.8780487804878, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(203, 235, 181)", + "description": "Time: 2007; symbol: AMZN; Price: 39.14", + "x": 207.3170731707317, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(202, 234, 181)", + "description": "Time: 2007; symbol: AMZN; Price: 39.79", + "x": 209.7560975609756, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(166, 220, 183)", + "description": "Time: 2007; symbol: AMZN; Price: 61.33", + "x": 212.1951219512195, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(152, 214, 185)", + "description": "Time: 2007; symbol: AMZN; Price: 69.14", + "x": 214.6341463414634, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(153, 215, 185)", + "description": "Time: 2007; symbol: AMZN; Price: 68.41", + "x": 217.0731707317073, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(133, 208, 187)", + "description": "Time: 2007; symbol: AMZN; Price: 78.54", + "x": 219.5121951219512, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(131, 206, 187)", + "description": "Time: 2007; symbol: AMZN; Price: 79.91", + "x": 221.9512195121951, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(104, 197, 190)", + "description": "Time: 2007; symbol: AMZN; Price: 93.15", + "x": 224.390243902439, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(112, 200, 189)", + "description": "Time: 2007; symbol: AMZN; Price: 89.15", + "x": 226.8292682926829, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(109, 199, 189)", + "description": "Time: 2007; symbol: AMZN; Price: 90.56", + "x": 229.2682926829268, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(105, 197, 190)", + "description": "Time: 2007; symbol: AMZN; Price: 92.64", + "x": 231.7073170731707, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(135, 208, 187)", + "description": "Time: 2008; symbol: AMZN; Price: 77.7", + "x": 234.14634146341461, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(160, 218, 184)", + "description": "Time: 2008; symbol: AMZN; Price: 64.47", + "x": 236.58536585365854, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(148, 213, 185)", + "description": "Time: 2008; symbol: AMZN; Price: 71.3", + "x": 239.02439024390245, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(133, 207, 187)", + "description": "Time: 2008; symbol: AMZN; Price: 78.63", + "x": 241.46341463414635, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(127, 205, 187)", + "description": "Time: 2008; symbol: AMZN; Price: 81.62", + "x": 243.90243902439025, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(144, 211, 186)", + "description": "Time: 2008; symbol: AMZN; Price: 73.33", + "x": 246.34146341463415, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(138, 209, 186)", + "description": "Time: 2008; symbol: AMZN; Price: 76.34", + "x": 248.78048780487805, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(129, 206, 187)", + "description": "Time: 2008; symbol: AMZN; Price: 80.81", + "x": 251.21951219512195, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(145, 212, 185)", + "description": "Time: 2008; symbol: AMZN; Price: 72.76", + "x": 253.65853658536585, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(174, 223, 182)", + "description": "Time: 2008; symbol: AMZN; Price: 57.24", + "x": 256.0975609756097, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(198, 233, 181)", + "description": "Time: 2008; symbol: AMZN; Price: 42.7", + "x": 258.5365853658536, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(185, 228, 181)", + "description": "Time: 2008; symbol: AMZN; Price: 51.28", + "x": 260.9756097560976, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(171, 222, 183)", + "description": "Time: 2009; symbol: AMZN; Price: 58.82", + "x": 263.4146341463415, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(160, 218, 184)", + "description": "Time: 2009; symbol: AMZN; Price: 64.79", + "x": 265.8536585365854, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(143, 211, 186)", + "description": "Time: 2009; symbol: AMZN; Price: 73.44", + "x": 268.2926829268293, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(129, 206, 187)", + "description": "Time: 2009; symbol: AMZN; Price: 80.52", + "x": 270.7317073170732, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(134, 208, 187)", + "description": "Time: 2009; symbol: AMZN; Price: 77.99", + "x": 273.1707317073171, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(123, 204, 188)", + "description": "Time: 2009; symbol: AMZN; Price: 83.66", + "x": 275.609756097561, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(119, 202, 188)", + "description": "Time: 2009; symbol: AMZN; Price: 85.76", + "x": 278.0487804878049, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(128, 206, 187)", + "description": "Time: 2009; symbol: AMZN; Price: 81.19", + "x": 280.4878048780488, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(104, 197, 190)", + "description": "Time: 2009; symbol: AMZN; Price: 93.36", + "x": 282.9268292682927, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(64, 176, 194)", + "description": "Time: 2009; symbol: AMZN; Price: 118.81", + "x": 285.3658536585366, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(44, 158, 192)", + "description": "Time: 2009; symbol: AMZN; Price: 135.91", + "x": 287.8048780487805, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(46, 160, 192)", + "description": "Time: 2009; symbol: AMZN; Price: 134.52", + "x": 290.2439024390244, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(56, 169, 193)", + "description": "Time: 2010; symbol: AMZN; Price: 125.41", + "x": 292.6829268292683, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(65, 176, 194)", + "description": "Time: 2010; symbol: AMZN; Price: 118.4", + "x": 295.1219512195122, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(53, 165, 193)", + "description": "Time: 2010; symbol: AMZN; Price: 128.82", + "x": 297.5609756097561, + "width": 2.4390243902439024, + "y": 25, + "height": 25 + }, + { + "fill": "rgb(92, 191, 191)", + "description": "Time: 2000; symbol: IBM; Price: 100.52", + "x": 0, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(106, 198, 190)", + "description": "Time: 2000; symbol: IBM; Price: 92.11", + "x": 2.4390243902439024, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(83, 187, 192)", + "description": "Time: 2000; symbol: IBM; Price: 106.11", + "x": 4.878048780487805, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(93, 191, 191)", + "description": "Time: 2000; symbol: IBM; Price: 99.95", + "x": 7.317073170731707, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(99, 194, 191)", + "description": "Time: 2000; symbol: IBM; Price: 96.31", + "x": 9.75609756097561, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(96, 193, 191)", + "description": "Time: 2000; symbol: IBM; Price: 98.33", + "x": 12.195121951219512, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(92, 191, 191)", + "description": "Time: 2000; symbol: IBM; Price: 100.74", + "x": 14.634146341463413, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(64, 176, 194)", + "description": "Time: 2000; symbol: IBM; Price: 118.62", + "x": 17.073170731707318, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(91, 190, 192)", + "description": "Time: 2000; symbol: IBM; Price: 101.19", + "x": 19.51219512195122, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(113, 200, 189)", + "description": "Time: 2000; symbol: IBM; Price: 88.5", + "x": 21.95121951219512, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(122, 203, 188)", + "description": "Time: 2000; symbol: IBM; Price: 84.12", + "x": 24.390243902439025, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(137, 209, 186)", + "description": "Time: 2000; symbol: IBM; Price: 76.47", + "x": 26.829268292682926, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(92, 191, 191)", + "description": "Time: 2001; symbol: IBM; Price: 100.76", + "x": 29.268292682926827, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(111, 199, 189)", + "description": "Time: 2001; symbol: IBM; Price: 89.98", + "x": 31.70731707317073, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(117, 202, 189)", + "description": "Time: 2001; symbol: IBM; Price: 86.63", + "x": 34.146341463414636, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(87, 188, 192)", + "description": "Time: 2001; symbol: IBM; Price: 103.7", + "x": 36.58536585365854, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(92, 191, 191)", + "description": "Time: 2001; symbol: IBM; Price: 100.82", + "x": 39.02439024390244, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(89, 190, 192)", + "description": "Time: 2001; symbol: IBM; Price: 102.35", + "x": 41.46341463414634, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(102, 195, 190)", + "description": "Time: 2001; symbol: IBM; Price: 94.87", + "x": 43.90243902439024, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(110, 199, 189)", + "description": "Time: 2001; symbol: IBM; Price: 90.25", + "x": 46.34146341463415, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(125, 204, 188)", + "description": "Time: 2001; symbol: IBM; Price: 82.82", + "x": 48.78048780487805, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(97, 193, 191)", + "description": "Time: 2001; symbol: IBM; Price: 97.58", + "x": 51.21951219512195, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(86, 188, 192)", + "description": "Time: 2001; symbol: IBM; Price: 104.5", + "x": 53.65853658536585, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(78, 184, 193)", + "description": "Time: 2001; symbol: IBM; Price: 109.36", + "x": 56.09756097560975, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(97, 193, 191)", + "description": "Time: 2002; symbol: IBM; Price: 97.54", + "x": 58.536585365853654, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(113, 200, 189)", + "description": "Time: 2002; symbol: IBM; Price: 88.82", + "x": 60.97560975609756, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(103, 196, 190)", + "description": "Time: 2002; symbol: IBM; Price: 94.15", + "x": 63.41463414634146, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(139, 210, 186)", + "description": "Time: 2002; symbol: IBM; Price: 75.82", + "x": 65.85365853658537, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(144, 212, 185)", + "description": "Time: 2002; symbol: IBM; Price: 72.97", + "x": 68.29268292682927, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(159, 217, 184)", + "description": "Time: 2002; symbol: IBM; Price: 65.31", + "x": 70.73170731707317, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(162, 218, 184)", + "description": "Time: 2002; symbol: IBM; Price: 63.86", + "x": 73.17073170731707, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(153, 215, 185)", + "description": "Time: 2002; symbol: IBM; Price: 68.52", + "x": 75.60975609756098, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(182, 226, 182)", + "description": "Time: 2002; symbol: IBM; Price: 53.01", + "x": 78.04878048780488, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(147, 213, 185)", + "description": "Time: 2002; symbol: IBM; Price: 71.76", + "x": 80.48780487804878, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(132, 207, 187)", + "description": "Time: 2002; symbol: IBM; Price: 79.16", + "x": 82.92682926829268, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(149, 213, 185)", + "description": "Time: 2002; symbol: IBM; Price: 70.58", + "x": 85.36585365853658, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(148, 213, 185)", + "description": "Time: 2003; symbol: IBM; Price: 71.22", + "x": 87.80487804878048, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(148, 213, 185)", + "description": "Time: 2003; symbol: IBM; Price: 71.13", + "x": 90.24390243902438, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(147, 213, 185)", + "description": "Time: 2003; symbol: IBM; Price: 71.57", + "x": 92.6829268292683, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(135, 208, 186)", + "description": "Time: 2003; symbol: IBM; Price: 77.47", + "x": 95.1219512195122, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(129, 206, 187)", + "description": "Time: 2003; symbol: IBM; Price: 80.48", + "x": 97.5609756097561, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(139, 210, 186)", + "description": "Time: 2003; symbol: IBM; Price: 75.42", + "x": 100, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(142, 211, 186)", + "description": "Time: 2003; symbol: IBM; Price: 74.28", + "x": 102.4390243902439, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(140, 210, 186)", + "description": "Time: 2003; symbol: IBM; Price: 75.12", + "x": 104.8780487804878, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(129, 206, 187)", + "description": "Time: 2003; symbol: IBM; Price: 80.91", + "x": 107.3170731707317, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(126, 205, 188)", + "description": "Time: 2003; symbol: IBM; Price: 81.96", + "x": 109.7560975609756, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(124, 204, 188)", + "description": "Time: 2003; symbol: IBM; Price: 83.08", + "x": 112.1951219512195, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(120, 203, 188)", + "description": "Time: 2003; symbol: IBM; Price: 85.05", + "x": 114.6341463414634, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(108, 198, 190)", + "description": "Time: 2004; symbol: IBM; Price: 91.06", + "x": 117.07317073170731, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(113, 200, 189)", + "description": "Time: 2004; symbol: IBM; Price: 88.7", + "x": 119.51219512195122, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(122, 203, 188)", + "description": "Time: 2004; symbol: IBM; Price: 84.41", + "x": 121.95121951219512, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(128, 206, 187)", + "description": "Time: 2004; symbol: IBM; Price: 81.04", + "x": 124.39024390243902, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(127, 205, 187)", + "description": "Time: 2004; symbol: IBM; Price: 81.59", + "x": 126.82926829268293, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(128, 206, 187)", + "description": "Time: 2004; symbol: IBM; Price: 81.19", + "x": 129.2682926829268, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(130, 206, 187)", + "description": "Time: 2004; symbol: IBM; Price: 80.19", + "x": 131.70731707317074, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(134, 208, 187)", + "description": "Time: 2004; symbol: IBM; Price: 78.17", + "x": 134.14634146341464, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(132, 207, 187)", + "description": "Time: 2004; symbol: IBM; Price: 79.13", + "x": 136.58536585365854, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(125, 204, 188)", + "description": "Time: 2004; symbol: IBM; Price: 82.84", + "x": 139.02439024390245, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(116, 201, 189)", + "description": "Time: 2004; symbol: IBM; Price: 87.15", + "x": 141.46341463414635, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(108, 198, 190)", + "description": "Time: 2004; symbol: IBM; Price: 91.16", + "x": 143.90243902439025, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(118, 202, 189)", + "description": "Time: 2005; symbol: IBM; Price: 86.39", + "x": 146.34146341463415, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(119, 202, 188)", + "description": "Time: 2005; symbol: IBM; Price: 85.78", + "x": 148.78048780487805, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(121, 203, 188)", + "description": "Time: 2005; symbol: IBM; Price: 84.66", + "x": 151.21951219512195, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(149, 213, 185)", + "description": "Time: 2005; symbol: IBM; Price: 70.77", + "x": 153.65853658536585, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(150, 214, 185)", + "description": "Time: 2005; symbol: IBM; Price: 70.18", + "x": 156.09756097560975, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(152, 215, 185)", + "description": "Time: 2005; symbol: IBM; Price: 68.93", + "x": 158.53658536585365, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(135, 208, 186)", + "description": "Time: 2005; symbol: IBM; Price: 77.53", + "x": 160.97560975609755, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(140, 210, 186)", + "description": "Time: 2005; symbol: IBM; Price: 75.07", + "x": 163.41463414634146, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(141, 210, 186)", + "description": "Time: 2005; symbol: IBM; Price: 74.7", + "x": 165.85365853658536, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(138, 209, 186)", + "description": "Time: 2005; symbol: IBM; Price: 76.25", + "x": 168.29268292682926, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(124, 204, 188)", + "description": "Time: 2005; symbol: IBM; Price: 82.98", + "x": 170.73170731707316, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(137, 209, 186)", + "description": "Time: 2005; symbol: IBM; Price: 76.73", + "x": 173.17073170731706, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(138, 209, 186)", + "description": "Time: 2006; symbol: IBM; Price: 75.89", + "x": 175.60975609756096, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(140, 210, 186)", + "description": "Time: 2006; symbol: IBM; Price: 75.09", + "x": 178.04878048780486, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(136, 209, 186)", + "description": "Time: 2006; symbol: IBM; Price: 77.17", + "x": 180.48780487804876, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(136, 209, 186)", + "description": "Time: 2006; symbol: IBM; Price: 77.05", + "x": 182.9268292682927, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(140, 210, 186)", + "description": "Time: 2006; symbol: IBM; Price: 75.04", + "x": 185.3658536585366, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(146, 212, 185)", + "description": "Time: 2006; symbol: IBM; Price: 72.15", + "x": 187.8048780487805, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(145, 212, 185)", + "description": "Time: 2006; symbol: IBM; Price: 72.7", + "x": 190.2439024390244, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(138, 209, 186)", + "description": "Time: 2006; symbol: IBM; Price: 76.35", + "x": 192.6829268292683, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(136, 208, 186)", + "description": "Time: 2006; symbol: IBM; Price: 77.26", + "x": 195.1219512195122, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(116, 201, 189)", + "description": "Time: 2006; symbol: IBM; Price: 87.06", + "x": 197.5609756097561, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(117, 201, 189)", + "description": "Time: 2006; symbol: IBM; Price: 86.95", + "x": 200, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(107, 198, 190)", + "description": "Time: 2006; symbol: IBM; Price: 91.9", + "x": 202.4390243902439, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(103, 196, 190)", + "description": "Time: 2007; symbol: IBM; Price: 93.79", + "x": 204.8780487804878, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(114, 200, 189)", + "description": "Time: 2007; symbol: IBM; Price: 88.18", + "x": 207.3170731707317, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(112, 199, 189)", + "description": "Time: 2007; symbol: IBM; Price: 89.44", + "x": 209.7560975609756, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(98, 194, 191)", + "description": "Time: 2007; symbol: IBM; Price: 96.98", + "x": 212.1951219512195, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(90, 190, 192)", + "description": "Time: 2007; symbol: IBM; Price: 101.54", + "x": 214.6341463414634, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(93, 191, 191)", + "description": "Time: 2007; symbol: IBM; Price: 100.25", + "x": 217.0731707317073, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(84, 187, 192)", + "description": "Time: 2007; symbol: IBM; Price: 105.4", + "x": 219.5121951219512, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(74, 182, 193)", + "description": "Time: 2007; symbol: IBM; Price: 111.54", + "x": 221.9512195121951, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(72, 181, 194)", + "description": "Time: 2007; symbol: IBM; Price: 112.6", + "x": 224.390243902439, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(75, 183, 193)", + "description": "Time: 2007; symbol: IBM; Price: 111", + "x": 226.8292682926829, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(92, 191, 191)", + "description": "Time: 2007; symbol: IBM; Price: 100.9", + "x": 229.2682926829268, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(87, 188, 192)", + "description": "Time: 2007; symbol: IBM; Price: 103.7", + "x": 231.7073170731707, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(88, 189, 192)", + "description": "Time: 2008; symbol: IBM; Price: 102.75", + "x": 234.14634146341461, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(77, 184, 193)", + "description": "Time: 2008; symbol: IBM; Price: 109.64", + "x": 236.58536585365854, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(75, 183, 193)", + "description": "Time: 2008; symbol: IBM; Price: 110.87", + "x": 239.02439024390245, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(67, 178, 194)", + "description": "Time: 2008; symbol: IBM; Price: 116.23", + "x": 241.46341463414635, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(57, 169, 193)", + "description": "Time: 2008; symbol: IBM; Price: 125.14", + "x": 243.90243902439025, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(69, 180, 194)", + "description": "Time: 2008; symbol: IBM; Price: 114.6", + "x": 246.34146341463415, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(58, 171, 193)", + "description": "Time: 2008; symbol: IBM; Price: 123.74", + "x": 248.78048780487805, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(65, 176, 194)", + "description": "Time: 2008; symbol: IBM; Price: 118.16", + "x": 251.21951219512195, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(71, 181, 194)", + "description": "Time: 2008; symbol: IBM; Price: 113.53", + "x": 253.65853658536585, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(110, 199, 189)", + "description": "Time: 2008; symbol: IBM; Price: 90.24", + "x": 256.0975609756097, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(131, 207, 187)", + "description": "Time: 2008; symbol: IBM; Price: 79.65", + "x": 258.5365853658536, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(126, 205, 188)", + "description": "Time: 2008; symbol: IBM; Price: 82.15", + "x": 260.9756097560976, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(112, 199, 189)", + "description": "Time: 2009; symbol: IBM; Price: 89.46", + "x": 263.4146341463415, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(110, 199, 189)", + "description": "Time: 2009; symbol: IBM; Price: 90.32", + "x": 265.8536585365854, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(101, 195, 190)", + "description": "Time: 2009; symbol: IBM; Price: 95.09", + "x": 268.2926829268293, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(91, 190, 192)", + "description": "Time: 2009; symbol: IBM; Price: 101.29", + "x": 270.7317073170732, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(85, 188, 192)", + "description": "Time: 2009; symbol: IBM; Price: 104.85", + "x": 273.1707317073171, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(88, 189, 192)", + "description": "Time: 2009; symbol: IBM; Price: 103.01", + "x": 275.609756097561, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(67, 178, 194)", + "description": "Time: 2009; symbol: IBM; Price: 116.34", + "x": 278.0487804878049, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(66, 177, 194)", + "description": "Time: 2009; symbol: IBM; Price: 117", + "x": 280.4878048780488, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(64, 176, 194)", + "description": "Time: 2009; symbol: IBM; Price: 118.55", + "x": 282.9268292682927, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(63, 175, 194)", + "description": "Time: 2009; symbol: IBM; Price: 119.54", + "x": 285.3658536585366, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(56, 169, 193)", + "description": "Time: 2009; symbol: IBM; Price: 125.79", + "x": 287.8048780487805, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(51, 164, 193)", + "description": "Time: 2009; symbol: IBM; Price: 130.32", + "x": 290.2439024390244, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(61, 173, 193)", + "description": "Time: 2010; symbol: IBM; Price: 121.85", + "x": 292.6829268292683, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(54, 167, 193)", + "description": "Time: 2010; symbol: IBM; Price: 127.16", + "x": 295.1219512195122, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(56, 169, 193)", + "description": "Time: 2010; symbol: IBM; Price: 125.55", + "x": 297.5609756097561, + "width": 2.4390243902439024, + "y": 50, + "height": 25 + }, + { + "fill": "rgb(221, 242, 181)", + "description": "Time: 2000; symbol: AAPL; Price: 25.94", + "x": 0, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(218, 240, 180)", + "description": "Time: 2000; symbol: AAPL; Price: 28.66", + "x": 2.4390243902439024, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(210, 238, 180)", + "description": "Time: 2000; symbol: AAPL; Price: 33.95", + "x": 4.878048780487805, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(214, 239, 180)", + "description": "Time: 2000; symbol: AAPL; Price: 31.01", + "x": 7.317073170731707, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(225, 243, 183)", + "description": "Time: 2000; symbol: AAPL; Price: 21", + "x": 9.75609756097561, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(220, 242, 181)", + "description": "Time: 2000; symbol: AAPL; Price: 26.19", + "x": 12.195121951219512, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(221, 242, 181)", + "description": "Time: 2000; symbol: AAPL; Price: 25.41", + "x": 14.634146341463413, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(215, 239, 180)", + "description": "Time: 2000; symbol: AAPL; Price: 30.47", + "x": 17.073170731707318, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(233, 246, 186)", + "description": "Time: 2000; symbol: AAPL; Price: 12.88", + "x": 19.51219512195122, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(235, 248, 187)", + "description": "Time: 2000; symbol: AAPL; Price: 9.78", + "x": 21.95121951219512, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(237, 248, 188)", + "description": "Time: 2000; symbol: AAPL; Price: 8.25", + "x": 24.390243902439025, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(238, 248, 188)", + "description": "Time: 2000; symbol: AAPL; Price: 7.44", + "x": 26.829268292682926, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(235, 247, 187)", + "description": "Time: 2001; symbol: AAPL; Price: 10.81", + "x": 29.268292682926827, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(236, 248, 188)", + "description": "Time: 2001; symbol: AAPL; Price: 9.12", + "x": 31.70731707317073, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(234, 247, 187)", + "description": "Time: 2001; symbol: AAPL; Price: 11.03", + "x": 34.146341463414636, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(233, 247, 186)", + "description": "Time: 2001; symbol: AAPL; Price: 12.74", + "x": 36.58536585365854, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(235, 248, 187)", + "description": "Time: 2001; symbol: AAPL; Price: 9.98", + "x": 39.02439024390244, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(234, 247, 187)", + "description": "Time: 2001; symbol: AAPL; Price: 11.62", + "x": 41.46341463414634, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(236, 248, 188)", + "description": "Time: 2001; symbol: AAPL; Price: 9.4", + "x": 43.90243902439024, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(236, 248, 188)", + "description": "Time: 2001; symbol: AAPL; Price: 9.27", + "x": 46.34146341463415, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(237, 248, 188)", + "description": "Time: 2001; symbol: AAPL; Price: 7.76", + "x": 48.78048780487805, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(236, 248, 188)", + "description": "Time: 2001; symbol: AAPL; Price: 8.78", + "x": 51.21951219512195, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(235, 247, 187)", + "description": "Time: 2001; symbol: AAPL; Price: 10.65", + "x": 53.65853658536585, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(234, 247, 187)", + "description": "Time: 2001; symbol: AAPL; Price: 10.95", + "x": 56.09756097560975, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(233, 247, 186)", + "description": "Time: 2002; symbol: AAPL; Price: 12.36", + "x": 58.536585365853654, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(235, 247, 187)", + "description": "Time: 2002; symbol: AAPL; Price: 10.85", + "x": 60.97560975609756, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(234, 247, 187)", + "description": "Time: 2002; symbol: AAPL; Price: 11.84", + "x": 63.41463414634146, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(233, 247, 186)", + "description": "Time: 2002; symbol: AAPL; Price: 12.14", + "x": 65.85365853658537, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(234, 247, 187)", + "description": "Time: 2002; symbol: AAPL; Price: 11.65", + "x": 68.29268292682927, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(236, 248, 188)", + "description": "Time: 2002; symbol: AAPL; Price: 8.86", + "x": 70.73170731707317, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(237, 248, 188)", + "description": "Time: 2002; symbol: AAPL; Price: 7.63", + "x": 73.17073170731707, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(238, 248, 188)", + "description": "Time: 2002; symbol: AAPL; Price: 7.38", + "x": 75.60975609756098, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(238, 249, 188)", + "description": "Time: 2002; symbol: AAPL; Price: 7.25", + "x": 78.04878048780488, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(237, 248, 188)", + "description": "Time: 2002; symbol: AAPL; Price: 8.03", + "x": 80.48780487804878, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(237, 248, 188)", + "description": "Time: 2002; symbol: AAPL; Price: 7.75", + "x": 82.92682926829268, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(238, 249, 189)", + "description": "Time: 2002; symbol: AAPL; Price: 7.16", + "x": 85.36585365853658, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(238, 249, 188)", + "description": "Time: 2003; symbol: AAPL; Price: 7.18", + "x": 87.80487804878048, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(238, 248, 188)", + "description": "Time: 2003; symbol: AAPL; Price: 7.51", + "x": 90.24390243902438, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(238, 249, 189)", + "description": "Time: 2003; symbol: AAPL; Price: 7.07", + "x": 92.6829268292683, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(238, 249, 189)", + "description": "Time: 2003; symbol: AAPL; Price: 7.11", + "x": 95.1219512195122, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(236, 248, 188)", + "description": "Time: 2003; symbol: AAPL; Price: 8.98", + "x": 97.5609756097561, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(236, 248, 188)", + "description": "Time: 2003; symbol: AAPL; Price: 9.53", + "x": 100, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(235, 247, 187)", + "description": "Time: 2003; symbol: AAPL; Price: 10.54", + "x": 102.4390243902439, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(234, 247, 187)", + "description": "Time: 2003; symbol: AAPL; Price: 11.31", + "x": 104.8780487804878, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(235, 247, 187)", + "description": "Time: 2003; symbol: AAPL; Price: 10.36", + "x": 107.3170731707317, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(234, 247, 187)", + "description": "Time: 2003; symbol: AAPL; Price: 11.44", + "x": 109.7560975609756, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(235, 247, 187)", + "description": "Time: 2003; symbol: AAPL; Price: 10.45", + "x": 112.1951219512195, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(235, 247, 187)", + "description": "Time: 2003; symbol: AAPL; Price: 10.69", + "x": 114.6341463414634, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(234, 247, 187)", + "description": "Time: 2004; symbol: AAPL; Price: 11.28", + "x": 117.07317073170731, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(233, 247, 187)", + "description": "Time: 2004; symbol: AAPL; Price: 11.96", + "x": 119.51219512195122, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(232, 246, 186)", + "description": "Time: 2004; symbol: AAPL; Price: 13.52", + "x": 121.95121951219512, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(233, 246, 186)", + "description": "Time: 2004; symbol: AAPL; Price: 12.89", + "x": 124.39024390243902, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(232, 246, 186)", + "description": "Time: 2004; symbol: AAPL; Price: 14.03", + "x": 126.82926829268293, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(230, 245, 185)", + "description": "Time: 2004; symbol: AAPL; Price: 16.27", + "x": 129.2682926829268, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(230, 245, 185)", + "description": "Time: 2004; symbol: AAPL; Price: 16.17", + "x": 131.70731707317074, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(229, 245, 184)", + "description": "Time: 2004; symbol: AAPL; Price: 17.25", + "x": 134.14634146341464, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(227, 244, 183)", + "description": "Time: 2004; symbol: AAPL; Price: 19.38", + "x": 136.58536585365854, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(220, 242, 181)", + "description": "Time: 2004; symbol: AAPL; Price: 26.2", + "x": 139.02439024390245, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(211, 238, 180)", + "description": "Time: 2004; symbol: AAPL; Price: 33.53", + "x": 141.46341463414635, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(213, 238, 180)", + "description": "Time: 2004; symbol: AAPL; Price: 32.2", + "x": 143.90243902439025, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(204, 235, 180)", + "description": "Time: 2005; symbol: AAPL; Price: 38.45", + "x": 146.34146341463415, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(195, 231, 181)", + "description": "Time: 2005; symbol: AAPL; Price: 44.86", + "x": 148.78048780487805, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(200, 233, 181)", + "description": "Time: 2005; symbol: AAPL; Price: 41.67", + "x": 151.21951219512195, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(207, 236, 180)", + "description": "Time: 2005; symbol: AAPL; Price: 36.06", + "x": 153.65853658536585, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(202, 234, 181)", + "description": "Time: 2005; symbol: AAPL; Price: 39.76", + "x": 156.09756097560975, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(206, 236, 180)", + "description": "Time: 2005; symbol: AAPL; Price: 36.81", + "x": 158.53658536585365, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(198, 233, 181)", + "description": "Time: 2005; symbol: AAPL; Price: 42.65", + "x": 160.97560975609755, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(192, 230, 181)", + "description": "Time: 2005; symbol: AAPL; Price: 46.89", + "x": 163.41463414634146, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(181, 226, 182)", + "description": "Time: 2005; symbol: AAPL; Price: 53.61", + "x": 165.85365853658536, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(173, 223, 183)", + "description": "Time: 2005; symbol: AAPL; Price: 57.59", + "x": 168.29268292682926, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(154, 215, 184)", + "description": "Time: 2005; symbol: AAPL; Price: 67.82", + "x": 170.73170731707316, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(146, 212, 185)", + "description": "Time: 2005; symbol: AAPL; Price: 71.89", + "x": 173.17073170731706, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(139, 210, 186)", + "description": "Time: 2006; symbol: AAPL; Price: 75.51", + "x": 175.60975609756096, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(153, 215, 185)", + "description": "Time: 2006; symbol: AAPL; Price: 68.49", + "x": 178.04878048780486, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(164, 219, 183)", + "description": "Time: 2006; symbol: AAPL; Price: 62.72", + "x": 180.48780487804876, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(149, 214, 185)", + "description": "Time: 2006; symbol: AAPL; Price: 70.39", + "x": 182.9268292682927, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(169, 221, 183)", + "description": "Time: 2006; symbol: AAPL; Price: 59.77", + "x": 185.3658536585366, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(174, 223, 182)", + "description": "Time: 2006; symbol: AAPL; Price: 57.27", + "x": 187.8048780487805, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(154, 215, 184)", + "description": "Time: 2006; symbol: AAPL; Price: 67.96", + "x": 190.2439024390244, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(154, 215, 184)", + "description": "Time: 2006; symbol: AAPL; Price: 67.85", + "x": 192.6829268292683, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(136, 209, 186)", + "description": "Time: 2006; symbol: AAPL; Price: 76.98", + "x": 195.1219512195122, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(128, 206, 187)", + "description": "Time: 2006; symbol: AAPL; Price: 81.08", + "x": 197.5609756097561, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(107, 198, 190)", + "description": "Time: 2006; symbol: AAPL; Price: 91.66", + "x": 200, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(121, 203, 188)", + "description": "Time: 2006; symbol: AAPL; Price: 84.84", + "x": 202.4390243902439, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(119, 202, 188)", + "description": "Time: 2007; symbol: AAPL; Price: 85.73", + "x": 204.8780487804878, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(121, 203, 188)", + "description": "Time: 2007; symbol: AAPL; Price: 84.61", + "x": 207.3170731707317, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(105, 197, 190)", + "description": "Time: 2007; symbol: AAPL; Price: 92.91", + "x": 209.7560975609756, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(93, 192, 191)", + "description": "Time: 2007; symbol: AAPL; Price: 99.8", + "x": 212.1951219512195, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(61, 173, 193)", + "description": "Time: 2007; symbol: AAPL; Price: 121.19", + "x": 214.6341463414634, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(60, 172, 193)", + "description": "Time: 2007; symbol: AAPL; Price: 122.04", + "x": 217.0731707317073, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(49, 163, 192)", + "description": "Time: 2007; symbol: AAPL; Price: 131.76", + "x": 219.5121951219512, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(43, 155, 191)", + "description": "Time: 2007; symbol: AAPL; Price: 138.48", + "x": 221.9512195121951, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(35, 136, 186)", + "description": "Time: 2007; symbol: AAPL; Price: 153.47", + "x": 224.390243902439, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(34, 86, 163)", + "description": "Time: 2007; symbol: AAPL; Price: 189.95", + "x": 226.8292682926829, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(33, 96, 168)", + "description": "Time: 2007; symbol: AAPL; Price: 182.22", + "x": 229.2682926829268, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(35, 75, 158)", + "description": "Time: 2007; symbol: AAPL; Price: 198.08", + "x": 231.7073170731707, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(45, 159, 192)", + "description": "Time: 2008; symbol: AAPL; Price: 135.36", + "x": 234.14634146341461, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(57, 169, 193)", + "description": "Time: 2008; symbol: AAPL; Price: 125.02", + "x": 236.58536585365854, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(40, 149, 189)", + "description": "Time: 2008; symbol: AAPL; Price: 143.5", + "x": 239.02439024390245, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(33, 107, 174)", + "description": "Time: 2008; symbol: AAPL; Price: 173.95", + "x": 241.46341463414635, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(34, 87, 164)", + "description": "Time: 2008; symbol: AAPL; Price: 188.75", + "x": 243.90243902439025, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(33, 116, 178)", + "description": "Time: 2008; symbol: AAPL; Price: 167.44", + "x": 246.34146341463415, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(33, 129, 183)", + "description": "Time: 2008; symbol: AAPL; Price: 158.95", + "x": 248.78048780487805, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(33, 113, 177)", + "description": "Time: 2008; symbol: AAPL; Price: 169.53", + "x": 251.21951219512195, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(70, 181, 194)", + "description": "Time: 2008; symbol: AAPL; Price: 113.66", + "x": 253.65853658536585, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(80, 185, 193)", + "description": "Time: 2008; symbol: AAPL; Price: 107.59", + "x": 256.0975609756097, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(105, 197, 190)", + "description": "Time: 2008; symbol: AAPL; Price: 92.67", + "x": 258.5365853658536, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(120, 202, 188)", + "description": "Time: 2008; symbol: AAPL; Price: 85.35", + "x": 260.9756097560976, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(110, 199, 189)", + "description": "Time: 2009; symbol: AAPL; Price: 90.13", + "x": 263.4146341463415, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(112, 200, 189)", + "description": "Time: 2009; symbol: AAPL; Price: 89.31", + "x": 265.8536585365854, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(85, 187, 192)", + "description": "Time: 2009; symbol: AAPL; Price: 105.12", + "x": 268.2926829268293, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(56, 169, 193)", + "description": "Time: 2009; symbol: AAPL; Price: 125.83", + "x": 270.7317073170732, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(44, 158, 192)", + "description": "Time: 2009; symbol: AAPL; Price: 135.81", + "x": 273.1707317073171, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(41, 150, 190)", + "description": "Time: 2009; symbol: AAPL; Price: 142.43", + "x": 275.609756097561, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(33, 122, 180)", + "description": "Time: 2009; symbol: AAPL; Price: 163.39", + "x": 278.0487804878049, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(33, 115, 177)", + "description": "Time: 2009; symbol: AAPL; Price: 168.21", + "x": 280.4878048780488, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(34, 92, 166)", + "description": "Time: 2009; symbol: AAPL; Price: 185.35", + "x": 282.9268292682927, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(34, 88, 164)", + "description": "Time: 2009; symbol: AAPL; Price: 188.5", + "x": 285.3658536585366, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(35, 73, 157)", + "description": "Time: 2009; symbol: AAPL; Price: 199.91", + "x": 287.8048780487805, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(32, 61, 146)", + "description": "Time: 2009; symbol: AAPL; Price: 210.73", + "x": 290.2439024390244, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(34, 83, 162)", + "description": "Time: 2010; symbol: AAPL; Price: 192.06", + "x": 292.6829268292683, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(34, 68, 152)", + "description": "Time: 2010; symbol: AAPL; Price: 204.62", + "x": 295.1219512195122, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + }, + { + "fill": "rgb(28, 49, 133)", + "description": "Time: 2010; symbol: AAPL; Price: 223.02", + "x": 297.5609756097561, + "width": 2.4390243902439024, + "y": 0, + "height": 25 + } + ], + "marktype": "rect", + "name": "marks", + "role": "mark", + "zindex": 0 + }, + { + "clip": false, + "interactive": false, + "items": [ + { + "items": [ + { + "clip": false, + "interactive": false, + "items": [ + { + "items": [ + { + "clip": false, + "interactive": false, + "items": [ + { + "opacity": 1, + "x": 0, + "y": 0, + "width": 16, + "height": 100, + "stroke": "#ddd", + "strokeWidth": 0, + "fill": { + "gradient": "linear", + "x1": 0, + "y1": 1, + "x2": 0, + "y2": 0, + "stops": [ + { + "offset": 0, + "color": "rgb(239, 249, 189)" + }, + { + "offset": 0.06463948398986409, + "color": "rgb(226, 244, 183)" + }, + { + "offset": 0.15678415111725408, + "color": "rgb(202, 234, 181)" + }, + { + "offset": 0.24892881824464408, + "color": "rgb(169, 221, 183)" + }, + { + "offset": 0.3410734853720341, + "color": "rgb(130, 206, 187)" + }, + { + "offset": 0.4332181524994241, + "color": "rgb(93, 191, 191)" + }, + { + "offset": 0.5253628196268141, + "color": "rgb(63, 174, 193)" + }, + { + "offset": 0.6175074867542041, + "color": "rgb(42, 153, 191)" + }, + { + "offset": 0.7096521538815941, + "color": "rgb(33, 127, 183)" + }, + { + "offset": 0.8017968210089841, + "color": "rgb(33, 98, 170)" + }, + { + "offset": 0.8939414881363741, + "color": "rgb(35, 73, 157)" + }, + { + "offset": 0.9860861552637641, + "color": "rgb(29, 52, 136)" + }, + { + "offset": 1, + "color": "rgb(28, 49, 133)" + } + ] + } + } + ], + "marktype": "rect", + "role": "legend-gradient", + "zindex": 0 + }, + { + "clip": false, + "interactive": false, + "items": [ + { + "fill": "#000", + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "align": "left", + "baseline": "bottom", + "y": 100, + "x": 18, + "text": "6" + }, + { + "fill": "#000", + "font": "sans-serif", + "fontSize": 10, + "opacity": 1, + "align": "left", + "baseline": "top", + "y": 0, + "x": 18, + "text": "223" + } + ], + "marktype": "text", + "role": "legend-label", + "zindex": 0 + } + ], + "x": 0, + "y": 16 + } + ], + "marktype": "group", + "role": "legend-entry", + "zindex": 0 + }, + { + "clip": false, + "interactive": false, + "items": [ + { + "fill": "#000", + "font": "sans-serif", + "fontSize": 11, + "fontWeight": "bold", + "opacity": 1, + "orient": "top", + "text": "Price", + "limit": 180, + "x": 0, + "y": 0, + "angle": 0, + "align": "left", + "baseline": "top" + } + ], + "marktype": "text", + "role": "legend-title", + "zindex": 0 + } + ], + "orient": "right", + "x": 318, + "y": 0, + "width": 35, + "height": 116 + } + ], + "marktype": "group", + "role": "legend", + "zindex": 0 + } + ], + "fill": "transparent", + "stroke": "#ddd", + "x": 0, + "y": 0, + "width": 300, + "height": 100 + } + ], + "marktype": "group", + "name": "root", + "role": "frame", + "zindex": 0 + } +} \ No newline at end of file diff --git a/avenger-vega-test-data/vega-scenegraphs/vl-convert/maptile_background.png b/avenger-vega-test-data/vega-scenegraphs/vl-convert/maptile_background.png index e8e1f5e..9fdfd7e 100644 Binary files a/avenger-vega-test-data/vega-scenegraphs/vl-convert/maptile_background.png and b/avenger-vega-test-data/vega-scenegraphs/vl-convert/maptile_background.png differ diff --git a/avenger-vega-test-data/vega-specs/text/lasagna_plot.vg.json b/avenger-vega-test-data/vega-specs/text/lasagna_plot.vg.json new file mode 100644 index 0000000..135cd66 --- /dev/null +++ b/avenger-vega-test-data/vega-specs/text/lasagna_plot.vg.json @@ -0,0 +1,134 @@ +{ + "$schema": "https://vega.github.io/schema/vega/v5.json", + "background": "white", + "padding": 5, + "width": 300, + "height": 100, + "style": "cell", + "data": [ + { + "name": "source_0", + "url": "https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/stocks.csv", + "format": {"type": "csv", "parse": {"date": "date"}, "delimiter": ","}, + "transform": [ + {"type": "filter", "expr": "(datum.symbol !== 'GOOG')"}, + { + "field": "date", + "type": "timeunit", + "units": ["year", "month", "date"], + "as": ["yearmonthdate_date", "yearmonthdate_date_end"] + }, + { + "type": "aggregate", + "groupby": ["yearmonthdate_date", "symbol"], + "ops": ["sum"], + "fields": ["price"], + "as": ["sum_price"] + }, + { + "type": "filter", + "expr": "isValid(datum[\"sum_price\"]) && isFinite(+datum[\"sum_price\"])" + } + ] + } + ], + "marks": [ + { + "name": "marks", + "type": "rect", + "style": ["rect"], + "from": {"data": "source_0"}, + "encode": { + "update": { + "fill": {"scale": "color", "field": "sum_price"}, + "description": { + "signal": "\"Time: \" + (timeFormat(datum[\"yearmonthdate_date\"], '%Y')) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"]) + \"; Price: \" + (format(datum[\"sum_price\"], \"\"))" + }, + "x": {"scale": "x", "field": "yearmonthdate_date"}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, + "y": {"scale": "y", "field": "symbol"}, + "height": {"signal": "max(0.25, bandwidth('y'))"} + } + } + } + ], + "scales": [ + { + "name": "x", + "type": "band", + "domain": { + "data": "source_0", + "field": "yearmonthdate_date", + "sort": true + }, + "range": [0, {"signal": "width"}], + "paddingInner": 0, + "paddingOuter": 0 + }, + { + "name": "y", + "type": "band", + "domain": {"data": "source_0", "field": "symbol", "sort": true}, + "range": [0, {"signal": "height"}], + "paddingInner": 0, + "paddingOuter": 0 + }, + { + "name": "color", + "type": "linear", + "domain": {"data": "source_0", "field": "sum_price"}, + "range": "heatmap", + "interpolate": "hcl", + "zero": false + } + ], + "axes": [ + { + "scale": "x", + "orient": "bottom", + "grid": false, + "title": "Time", + "format": "%Y", + "labelAngle": 0, + "labelOverlap": false, + "formatType": "time", + "labelBaseline": "top", + "tickMinStep": { + "signal": "datetime(2001, 0, 2, 0, 0, 0, 0) - datetime(2001, 0, 1, 0, 0, 0, 0)" + }, + "encode": { + "labels": { + "update": { + "fill": [ + { + "test": "month(datum.value) == 1 && date(datum.value) == 1", + "value": "black" + }, + {"value": null} + ] + } + }, + "ticks": { + "update": { + "stroke": [ + { + "test": "month(datum.value) == 1 && date(datum.value) == 1", + "value": "black" + }, + {"value": null} + ] + } + } + }, + "zindex": 1 + }, + {"scale": "y", "orient": "left", "grid": false, "zindex": 1} + ], + "legends": [ + { + "title": "Price", + "fill": "color", + "gradientLength": {"signal": "clamp(height, 64, 200)"} + } + ] +} \ No newline at end of file diff --git a/avenger-vega/src/marks/rule.rs b/avenger-vega/src/marks/rule.rs index 6a7f36b..503e708 100644 --- a/avenger-vega/src/marks/rule.rs +++ b/avenger-vega/src/marks/rule.rs @@ -1,6 +1,6 @@ use crate::error::AvengerVegaError; use crate::marks::mark::{VegaMarkContainer, VegaMarkItem}; -use crate::marks::values::{CssColorOrGradient, StrokeDashSpec}; +use crate::marks::values::{CssColorOrGradient, MissingNullOrValue, StrokeDashSpec}; use avenger::marks::mark::SceneMark; use avenger::marks::rule::RuleMark; use avenger::marks::value::{ColorOrGradient, EncodingValue, Gradient, StrokeCap}; @@ -13,7 +13,7 @@ pub struct VegaRuleItem { pub y: Option, pub x2: Option, pub y2: Option, - pub stroke: Option, + pub stroke: MissingNullOrValue, pub stroke_width: Option, pub stroke_cap: Option, pub stroke_opacity: Option, @@ -48,8 +48,18 @@ impl VegaMarkContainer { let mut zindex = Vec::::new(); let mut gradients = Vec::::new(); + let mut len: usize = 0; // For each item, append explicit values to corresponding vector for item in &self.items { + if item.stroke.is_null() { + // Skip rules with stroke set to explicit null value (not just missing) + continue; + } + if let Some(v) = item.stroke.as_option() { + let opacity = item.stroke_opacity.unwrap_or(1.0) * item.opacity.unwrap_or(1.0); + stroke.push(v.to_color_or_grad(opacity, &mut gradients)?); + } + let x = item.x.unwrap_or(0.0); let y = item.y.unwrap_or(0.0); x0.push(x); @@ -57,11 +67,6 @@ impl VegaMarkContainer { x1.push(item.x2.unwrap_or(x)); y1.push(item.y2.unwrap_or(y)); - if let Some(v) = &item.stroke { - let opacity = item.stroke_opacity.unwrap_or(1.0) * item.opacity.unwrap_or(1.0); - stroke.push(v.to_color_or_grad(opacity, &mut gradients)?); - } - if let Some(s) = item.stroke_width { stroke_width.push(s); } @@ -77,10 +82,11 @@ impl VegaMarkContainer { if let Some(v) = item.zindex { zindex.push(v); } + + len += 1; } // Override values with vectors - let len = self.items.len(); mark.len = len as u32; if x0.len() == len { diff --git a/avenger-vega/src/marks/text.rs b/avenger-vega/src/marks/text.rs index c627612..91d6537 100644 --- a/avenger-vega/src/marks/text.rs +++ b/avenger-vega/src/marks/text.rs @@ -1,5 +1,6 @@ use crate::error::AvengerVegaError; use crate::marks::mark::{VegaMarkContainer, VegaMarkItem}; +use crate::marks::values::MissingNullOrValue; use avenger::marks::mark::SceneMark; use avenger::marks::text::{ FontStyleSpec, FontWeightSpec, TextAlignSpec, TextBaselineSpec, TextMark, @@ -20,7 +21,7 @@ pub struct VegaTextItem { pub baseline: Option, pub dx: Option, pub dy: Option, - pub fill: Option, + pub fill: MissingNullOrValue, pub opacity: Option, pub fill_opacity: Option, pub font: Option, @@ -62,7 +63,20 @@ impl VegaMarkContainer { let mut limit = Vec::::new(); let mut zindex = Vec::::new(); + let mut len: usize = 0; for item in &self.items { + // When fill is set to null literal (not just missing) we skip the + // text item all together + if item.fill.is_null() { + continue; + } + if let Some(v) = item.fill.as_option() { + let c = csscolorparser::parse(v)?; + let opacity = + c.a as f32 * item.fill_opacity.unwrap_or(1.0) * item.opacity.unwrap_or(1.0); + color.push([c.r as f32, c.g as f32, c.b as f32, opacity]) + } + x.push(item.x.unwrap_or(0.0) + item.dx.unwrap_or(0.0)); y.push(item.y.unwrap_or(0.0) + item.dy.unwrap_or(0.0)); text.push(match item.text.clone() { @@ -83,13 +97,6 @@ impl VegaMarkContainer { angle.push(v); } - if let Some(v) = &item.fill { - let c = csscolorparser::parse(v)?; - let opacity = - c.a as f32 * item.fill_opacity.unwrap_or(1.0) * item.opacity.unwrap_or(1.0); - color.push([c.r as f32, c.g as f32, c.b as f32, opacity]) - } - if let Some(v) = item.dx { dx.push(v); } @@ -121,12 +128,14 @@ impl VegaMarkContainer { if let Some(v) = item.zindex { zindex.push(v); } + + len += 1; } - // Override values with vectors - let len = self.items.len(); + // Update len mark.len = len as u32; + // Override values with vectors if x.len() == len { mark.x = EncodingValue::Array { values: x }; } diff --git a/avenger-vega/src/marks/values.rs b/avenger-vega/src/marks/values.rs index 9d4b7b8..0bb7d81 100644 --- a/avenger-vega/src/marks/values.rs +++ b/avenger-vega/src/marks/values.rs @@ -2,7 +2,7 @@ use crate::error::AvengerVegaError; use avenger::marks::value::{ ColorOrGradient, Gradient, GradientStop, LinearGradient, RadialGradient, }; -use serde::{Deserialize, Serialize}; +use serde::{Deserialize, Deserializer, Serialize, Serializer}; use std::borrow::Cow; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] @@ -135,3 +135,60 @@ impl CssGradientStop { }) } } + +/// Helper struct that will not drop null values on round trip (de)serialization +#[derive(Debug, Clone, PartialEq, Eq, Default)] +pub enum MissingNullOrValue { + #[default] + Missing, + Null, + Value(V), +} + +impl MissingNullOrValue { + pub fn is_missing(&self) -> bool { + matches!(self, MissingNullOrValue::Missing) + } + + pub fn is_null(&self) -> bool { + matches!(self, MissingNullOrValue::Null) + } + + pub fn as_option(&self) -> Option<&V> { + match self { + MissingNullOrValue::Missing | MissingNullOrValue::Null => None, + MissingNullOrValue::Value(v) => Some(v), + } + } +} + +impl From> for MissingNullOrValue { + fn from(opt: Option) -> MissingNullOrValue { + match opt { + Some(v) => MissingNullOrValue::Value(v), + None => MissingNullOrValue::Null, + } + } +} + +impl<'de, V: Deserialize<'de>> Deserialize<'de> for MissingNullOrValue { + fn deserialize(deserializer: D) -> std::result::Result + where + D: Deserializer<'de>, + { + Option::deserialize(deserializer).map(Into::into) + } +} + +impl Serialize for MissingNullOrValue { + fn serialize(&self, serializer: S) -> std::result::Result + where + S: Serializer, + { + match self { + MissingNullOrValue::Missing => None::>.serialize(serializer), + MissingNullOrValue::Null => serde_json::Value::Null.serialize(serializer), + MissingNullOrValue::Value(v) => v.serialize(serializer), + } + } +} diff --git a/avenger-wgpu/tests/test_image_baselines.rs b/avenger-wgpu/tests/test_image_baselines.rs index 4f1fc03..b250c68 100644 --- a/avenger-wgpu/tests/test_image_baselines.rs +++ b/avenger-wgpu/tests/test_image_baselines.rs @@ -66,6 +66,7 @@ mod test_image_baselines { case("text", "bar_axis_labels", 0.01), case("text", "text_rotation", 0.015), case("text", "letter_scatter", 0.012), + case("text", "lasagna_plot", 0.01), // vl-convert doesn't support emoji at all case("text", "emoji", 2.0),