• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use plotters::prelude::*;
2 
3 const OUT_FILE_NAME: &'static str = "plotters-doc-data/full_palette.png";
4 
main() -> Result<(), Box<dyn std::error::Error>>5 fn main() -> Result<(), Box<dyn std::error::Error>> {
6     let root = BitMapBackend::new(OUT_FILE_NAME, (2000, 850)).into_drawing_area();
7 
8     root.fill(&WHITE)?;
9 
10     let mut chart = ChartBuilder::on(&root)
11         .caption("Demonstration of full_palette Colors", ("sans-serif", 50))
12         .build_cartesian_2d(-0.5f32..19f32, -1f32..15f32)?;
13 
14     use full_palette::*;
15     let colors = [
16         [
17             RED, RED_50, RED_100, RED_200, RED_300, RED_400, RED_500, RED_600, RED_700, RED_800,
18             RED_900, RED_A100, RED_A200, RED_A400, RED_A700,
19         ],
20         [
21             PINK, PINK_50, PINK_100, PINK_200, PINK_300, PINK_400, PINK_500, PINK_600, PINK_700,
22             PINK_800, PINK_900, PINK_A100, PINK_A200, PINK_A400, PINK_A700,
23         ],
24         [
25             PURPLE,
26             PURPLE_50,
27             PURPLE_100,
28             PURPLE_200,
29             PURPLE_300,
30             PURPLE_400,
31             PURPLE_500,
32             PURPLE_600,
33             PURPLE_700,
34             PURPLE_800,
35             PURPLE_900,
36             PURPLE_A100,
37             PURPLE_A200,
38             PURPLE_A400,
39             PURPLE_A700,
40         ],
41         [
42             DEEPPURPLE,
43             DEEPPURPLE_50,
44             DEEPPURPLE_100,
45             DEEPPURPLE_200,
46             DEEPPURPLE_300,
47             DEEPPURPLE_400,
48             DEEPPURPLE_500,
49             DEEPPURPLE_600,
50             DEEPPURPLE_700,
51             DEEPPURPLE_800,
52             DEEPPURPLE_900,
53             DEEPPURPLE_A100,
54             DEEPPURPLE_A200,
55             DEEPPURPLE_A400,
56             DEEPPURPLE_A700,
57         ],
58         [
59             INDIGO,
60             INDIGO_50,
61             INDIGO_100,
62             INDIGO_200,
63             INDIGO_300,
64             INDIGO_400,
65             INDIGO_500,
66             INDIGO_600,
67             INDIGO_700,
68             INDIGO_800,
69             INDIGO_900,
70             INDIGO_A100,
71             INDIGO_A200,
72             INDIGO_A400,
73             INDIGO_A700,
74         ],
75         [
76             BLUE, BLUE_50, BLUE_100, BLUE_200, BLUE_300, BLUE_400, BLUE_500, BLUE_600, BLUE_700,
77             BLUE_800, BLUE_900, BLUE_A100, BLUE_A200, BLUE_A400, BLUE_A700,
78         ],
79         [
80             LIGHTBLUE,
81             LIGHTBLUE_50,
82             LIGHTBLUE_100,
83             LIGHTBLUE_200,
84             LIGHTBLUE_300,
85             LIGHTBLUE_400,
86             LIGHTBLUE_500,
87             LIGHTBLUE_600,
88             LIGHTBLUE_700,
89             LIGHTBLUE_800,
90             LIGHTBLUE_900,
91             LIGHTBLUE_A100,
92             LIGHTBLUE_A200,
93             LIGHTBLUE_A400,
94             LIGHTBLUE_A700,
95         ],
96         [
97             CYAN, CYAN_50, CYAN_100, CYAN_200, CYAN_300, CYAN_400, CYAN_500, CYAN_600, CYAN_700,
98             CYAN_800, CYAN_900, CYAN_A100, CYAN_A200, CYAN_A400, CYAN_A700,
99         ],
100         [
101             TEAL, TEAL_50, TEAL_100, TEAL_200, TEAL_300, TEAL_400, TEAL_500, TEAL_600, TEAL_700,
102             TEAL_800, TEAL_900, TEAL_A100, TEAL_A200, TEAL_A400, TEAL_A700,
103         ],
104         [
105             GREEN, GREEN_50, GREEN_100, GREEN_200, GREEN_300, GREEN_400, GREEN_500, GREEN_600,
106             GREEN_700, GREEN_800, GREEN_900, GREEN_A100, GREEN_A200, GREEN_A400, GREEN_A700,
107         ],
108         [
109             LIGHTGREEN,
110             LIGHTGREEN_50,
111             LIGHTGREEN_100,
112             LIGHTGREEN_200,
113             LIGHTGREEN_300,
114             LIGHTGREEN_400,
115             LIGHTGREEN_500,
116             LIGHTGREEN_600,
117             LIGHTGREEN_700,
118             LIGHTGREEN_800,
119             LIGHTGREEN_900,
120             LIGHTGREEN_A100,
121             LIGHTGREEN_A200,
122             LIGHTGREEN_A400,
123             LIGHTGREEN_A700,
124         ],
125         [
126             LIME, LIME_50, LIME_100, LIME_200, LIME_300, LIME_400, LIME_500, LIME_600, LIME_700,
127             LIME_800, LIME_900, LIME_A100, LIME_A200, LIME_A400, LIME_A700,
128         ],
129         [
130             YELLOW,
131             YELLOW_50,
132             YELLOW_100,
133             YELLOW_200,
134             YELLOW_300,
135             YELLOW_400,
136             YELLOW_500,
137             YELLOW_600,
138             YELLOW_700,
139             YELLOW_800,
140             YELLOW_900,
141             YELLOW_A100,
142             YELLOW_A200,
143             YELLOW_A400,
144             YELLOW_A700,
145         ],
146         [
147             AMBER, AMBER_50, AMBER_100, AMBER_200, AMBER_300, AMBER_400, AMBER_500, AMBER_600,
148             AMBER_700, AMBER_800, AMBER_900, AMBER_A100, AMBER_A200, AMBER_A400, AMBER_A700,
149         ],
150         [
151             ORANGE,
152             ORANGE_50,
153             ORANGE_100,
154             ORANGE_200,
155             ORANGE_300,
156             ORANGE_400,
157             ORANGE_500,
158             ORANGE_600,
159             ORANGE_700,
160             ORANGE_800,
161             ORANGE_900,
162             ORANGE_A100,
163             ORANGE_A200,
164             ORANGE_A400,
165             ORANGE_A700,
166         ],
167         [
168             DEEPORANGE,
169             DEEPORANGE_50,
170             DEEPORANGE_100,
171             DEEPORANGE_200,
172             DEEPORANGE_300,
173             DEEPORANGE_400,
174             DEEPORANGE_500,
175             DEEPORANGE_600,
176             DEEPORANGE_700,
177             DEEPORANGE_800,
178             DEEPORANGE_900,
179             DEEPORANGE_A100,
180             DEEPORANGE_A200,
181             DEEPORANGE_A400,
182             DEEPORANGE_A700,
183         ],
184         [
185             BROWN, BROWN_50, BROWN_100, BROWN_200, BROWN_300, BROWN_400, BROWN_500, BROWN_600,
186             BROWN_700, BROWN_800, BROWN_900, BROWN_A100, BROWN_A200, BROWN_A400, BROWN_A700,
187         ],
188         [
189             GREY, GREY_50, GREY_100, GREY_200, GREY_300, GREY_400, GREY_500, GREY_600, GREY_700,
190             GREY_800, GREY_900, GREY_A100, GREY_A200, GREY_A400, GREY_A700,
191         ],
192         [
193             BLUEGREY,
194             BLUEGREY_50,
195             BLUEGREY_100,
196             BLUEGREY_200,
197             BLUEGREY_300,
198             BLUEGREY_400,
199             BLUEGREY_500,
200             BLUEGREY_600,
201             BLUEGREY_700,
202             BLUEGREY_800,
203             BLUEGREY_900,
204             BLUEGREY_A100,
205             BLUEGREY_A200,
206             BLUEGREY_A400,
207             BLUEGREY_A700,
208         ],
209     ];
210     let color_names = [
211         [
212             "RED", "RED_50", "RED_100", "RED_200", "RED_300", "RED_400", "RED_500", "RED_600",
213             "RED_700", "RED_800", "RED_900", "RED_A100", "RED_A200", "RED_A400", "RED_A700",
214         ],
215         [
216             "PINK",
217             "PINK_50",
218             "PINK_100",
219             "PINK_200",
220             "PINK_300",
221             "PINK_400",
222             "PINK_500",
223             "PINK_600",
224             "PINK_700",
225             "PINK_800",
226             "PINK_900",
227             "PINK_A100",
228             "PINK_A200",
229             "PINK_A400",
230             "PINK_A700",
231         ],
232         [
233             "PURPLE",
234             "PURPLE_50",
235             "PURPLE_100",
236             "PURPLE_200",
237             "PURPLE_300",
238             "PURPLE_400",
239             "PURPLE_500",
240             "PURPLE_600",
241             "PURPLE_700",
242             "PURPLE_800",
243             "PURPLE_900",
244             "PURPLE_A100",
245             "PURPLE_A200",
246             "PURPLE_A400",
247             "PURPLE_A700",
248         ],
249         [
250             "DEEPPURPLE",
251             "DEEPPURPLE_50",
252             "DEEPPURPLE_100",
253             "DEEPPURPLE_200",
254             "DEEPPURPLE_300",
255             "DEEPPURPLE_400",
256             "DEEPPURPLE_500",
257             "DEEPPURPLE_600",
258             "DEEPPURPLE_700",
259             "DEEPPURPLE_800",
260             "DEEPPURPLE_900",
261             "DEEPPURPLE_A100",
262             "DEEPPURPLE_A200",
263             "DEEPPURPLE_A400",
264             "DEEPPURPLE_A700",
265         ],
266         [
267             "INDIGO",
268             "INDIGO_50",
269             "INDIGO_100",
270             "INDIGO_200",
271             "INDIGO_300",
272             "INDIGO_400",
273             "INDIGO_500",
274             "INDIGO_600",
275             "INDIGO_700",
276             "INDIGO_800",
277             "INDIGO_900",
278             "INDIGO_A100",
279             "INDIGO_A200",
280             "INDIGO_A400",
281             "INDIGO_A700",
282         ],
283         [
284             "BLUE",
285             "BLUE_50",
286             "BLUE_100",
287             "BLUE_200",
288             "BLUE_300",
289             "BLUE_400",
290             "BLUE_500",
291             "BLUE_600",
292             "BLUE_700",
293             "BLUE_800",
294             "BLUE_900",
295             "BLUE_A100",
296             "BLUE_A200",
297             "BLUE_A400",
298             "BLUE_A700",
299         ],
300         [
301             "LIGHTBLUE",
302             "LIGHTBLUE_50",
303             "LIGHTBLUE_100",
304             "LIGHTBLUE_200",
305             "LIGHTBLUE_300",
306             "LIGHTBLUE_400",
307             "LIGHTBLUE_500",
308             "LIGHTBLUE_600",
309             "LIGHTBLUE_700",
310             "LIGHTBLUE_800",
311             "LIGHTBLUE_900",
312             "LIGHTBLUE_A100",
313             "LIGHTBLUE_A200",
314             "LIGHTBLUE_A400",
315             "LIGHTBLUE_A700",
316         ],
317         [
318             "CYAN",
319             "CYAN_50",
320             "CYAN_100",
321             "CYAN_200",
322             "CYAN_300",
323             "CYAN_400",
324             "CYAN_500",
325             "CYAN_600",
326             "CYAN_700",
327             "CYAN_800",
328             "CYAN_900",
329             "CYAN_A100",
330             "CYAN_A200",
331             "CYAN_A400",
332             "CYAN_A700",
333         ],
334         [
335             "TEAL",
336             "TEAL_50",
337             "TEAL_100",
338             "TEAL_200",
339             "TEAL_300",
340             "TEAL_400",
341             "TEAL_500",
342             "TEAL_600",
343             "TEAL_700",
344             "TEAL_800",
345             "TEAL_900",
346             "TEAL_A100",
347             "TEAL_A200",
348             "TEAL_A400",
349             "TEAL_A700",
350         ],
351         [
352             "GREEN",
353             "GREEN_50",
354             "GREEN_100",
355             "GREEN_200",
356             "GREEN_300",
357             "GREEN_400",
358             "GREEN_500",
359             "GREEN_600",
360             "GREEN_700",
361             "GREEN_800",
362             "GREEN_900",
363             "GREEN_A100",
364             "GREEN_A200",
365             "GREEN_A400",
366             "GREEN_A700",
367         ],
368         [
369             "LIGHTGREEN",
370             "LIGHTGREEN_50",
371             "LIGHTGREEN_100",
372             "LIGHTGREEN_200",
373             "LIGHTGREEN_300",
374             "LIGHTGREEN_400",
375             "LIGHTGREEN_500",
376             "LIGHTGREEN_600",
377             "LIGHTGREEN_700",
378             "LIGHTGREEN_800",
379             "LIGHTGREEN_900",
380             "LIGHTGREEN_A100",
381             "LIGHTGREEN_A200",
382             "LIGHTGREEN_A400",
383             "LIGHTGREEN_A700",
384         ],
385         [
386             "LIME",
387             "LIME_50",
388             "LIME_100",
389             "LIME_200",
390             "LIME_300",
391             "LIME_400",
392             "LIME_500",
393             "LIME_600",
394             "LIME_700",
395             "LIME_800",
396             "LIME_900",
397             "LIME_A100",
398             "LIME_A200",
399             "LIME_A400",
400             "LIME_A700",
401         ],
402         [
403             "YELLOW",
404             "YELLOW_50",
405             "YELLOW_100",
406             "YELLOW_200",
407             "YELLOW_300",
408             "YELLOW_400",
409             "YELLOW_500",
410             "YELLOW_600",
411             "YELLOW_700",
412             "YELLOW_800",
413             "YELLOW_900",
414             "YELLOW_A100",
415             "YELLOW_A200",
416             "YELLOW_A400",
417             "YELLOW_A700",
418         ],
419         [
420             "AMBER",
421             "AMBER_50",
422             "AMBER_100",
423             "AMBER_200",
424             "AMBER_300",
425             "AMBER_400",
426             "AMBER_500",
427             "AMBER_600",
428             "AMBER_700",
429             "AMBER_800",
430             "AMBER_900",
431             "AMBER_A100",
432             "AMBER_A200",
433             "AMBER_A400",
434             "AMBER_A700",
435         ],
436         [
437             "ORANGE",
438             "ORANGE_50",
439             "ORANGE_100",
440             "ORANGE_200",
441             "ORANGE_300",
442             "ORANGE_400",
443             "ORANGE_500",
444             "ORANGE_600",
445             "ORANGE_700",
446             "ORANGE_800",
447             "ORANGE_900",
448             "ORANGE_A100",
449             "ORANGE_A200",
450             "ORANGE_A400",
451             "ORANGE_A700",
452         ],
453         [
454             "DEEPORANGE",
455             "DEEPORANGE_50",
456             "DEEPORANGE_100",
457             "DEEPORANGE_200",
458             "DEEPORANGE_300",
459             "DEEPORANGE_400",
460             "DEEPORANGE_500",
461             "DEEPORANGE_600",
462             "DEEPORANGE_700",
463             "DEEPORANGE_800",
464             "DEEPORANGE_900",
465             "DEEPORANGE_A100",
466             "DEEPORANGE_A200",
467             "DEEPORANGE_A400",
468             "DEEPORANGE_A700",
469         ],
470         [
471             "BROWN",
472             "BROWN_50",
473             "BROWN_100",
474             "BROWN_200",
475             "BROWN_300",
476             "BROWN_400",
477             "BROWN_500",
478             "BROWN_600",
479             "BROWN_700",
480             "BROWN_800",
481             "BROWN_900",
482             "BROWN_A100",
483             "BROWN_A200",
484             "BROWN_A400",
485             "BROWN_A700",
486         ],
487         [
488             "GREY",
489             "GREY_50",
490             "GREY_100",
491             "GREY_200",
492             "GREY_300",
493             "GREY_400",
494             "GREY_500",
495             "GREY_600",
496             "GREY_700",
497             "GREY_800",
498             "GREY_900",
499             "GREY_A100",
500             "GREY_A200",
501             "GREY_A400",
502             "GREY_A700",
503         ],
504         [
505             "BLUEGREY",
506             "BLUEGREY_50",
507             "BLUEGREY_100",
508             "BLUEGREY_200",
509             "BLUEGREY_300",
510             "BLUEGREY_400",
511             "BLUEGREY_500",
512             "BLUEGREY_600",
513             "BLUEGREY_700",
514             "BLUEGREY_800",
515             "BLUEGREY_900",
516             "BLUEGREY_A100",
517             "BLUEGREY_A200",
518             "BLUEGREY_A400",
519             "BLUEGREY_A700",
520         ],
521     ];
522 
523     use plotters::style::text_anchor::*;
524     let centered = Pos::new(HPos::Center, VPos::Top);
525     let label_style = TextStyle::from(("monospace", 14.0).into_font()).pos(centered);
526 
527     for (col, colors) in colors.iter().enumerate() {
528         chart.draw_series(colors.iter().zip(color_names[col].iter()).enumerate().map(
529             |(row, (color, &name))| {
530                 let row = row as f32;
531                 let col = col as f32;
532                 EmptyElement::at((col, row))
533                     + Circle::new((0, 0), 15, color.filled())
534                     + Text::new(name, (0, 16), &label_style)
535             },
536         ))?;
537     }
538 
539     // To avoid the IO failure being ignored silently, we manually call the present function
540     root.present().expect("Unable to write result to file, please make sure 'plotters-doc-data' dir exists under current dir");
541     println!("Result has been saved to {}", OUT_FILE_NAME);
542 
543     Ok(())
544 }
545 #[test]
entry_point()546 fn entry_point() {
547     main().unwrap()
548 }
549