11use plotters:: prelude:: * ;
22
3- use chrono:: { TimeZone , Utc } ;
3+ use chrono:: NaiveDate ;
44
55use std:: error:: Error ;
66
7+ // it's safe to use unwrap because we use known good values in test cases
8+ macro_rules! create_date {
9+ ( $year: expr, $month: expr, $day: expr) => {
10+ NaiveDate :: from_ymd_opt( $year, $month, $day) . unwrap( )
11+ } ;
12+ }
13+
714const OUT_FILE_NAME : & ' static str = "plotters-doc-data/slc-temp.png" ;
815fn main ( ) -> Result < ( ) , Box < dyn Error > > {
916 let root = BitMapBackend :: new ( OUT_FILE_NAME , ( 1024 , 768 ) ) . into_drawing_area ( ) ;
@@ -20,11 +27,11 @@ fn main() -> Result<(), Box<dyn Error>> {
2027 . set_label_area_size ( LabelAreaPosition :: Right , 60 )
2128 . set_label_area_size ( LabelAreaPosition :: Bottom , 40 )
2229 . build_cartesian_2d (
23- ( Utc . ymd ( 2010 , 1 , 1 ) ..Utc . ymd ( 2018 , 12 , 1 ) ) . monthly ( ) ,
30+ ( create_date ! ( 2010 , 1 , 1 ) ..create_date ! ( 2018 , 12 , 1 ) ) . monthly ( ) ,
2431 14.0 ..104.0 ,
2532 ) ?
2633 . set_secondary_coord (
27- ( Utc . ymd ( 2010 , 1 , 1 ) ..Utc . ymd ( 2018 , 12 , 1 ) ) . monthly ( ) ,
34+ ( create_date ! ( 2010 , 1 , 1 ) ..create_date ! ( 2018 , 12 , 1 ) ) . monthly ( ) ,
2835 -10.0 ..40.0 ,
2936 ) ;
3037
@@ -42,13 +49,13 @@ fn main() -> Result<(), Box<dyn Error>> {
4249 . draw ( ) ?;
4350
4451 chart. draw_series ( LineSeries :: new (
45- DATA . iter ( ) . map ( |( y, m, t) | ( Utc . ymd ( * y, * m, 1 ) , * t) ) ,
52+ DATA . iter ( ) . map ( |( y, m, t) | ( create_date ! ( * y, * m, 1 ) , * t) ) ,
4653 & BLUE ,
4754 ) ) ?;
4855
4956 chart. draw_series (
5057 DATA . iter ( )
51- . map ( |( y, m, t) | Circle :: new ( ( Utc . ymd ( * y, * m, 1 ) , * t) , 3 , BLUE . filled ( ) ) ) ,
58+ . map ( |( y, m, t) | Circle :: new ( ( create_date ! ( * y, * m, 1 ) , * t) , 3 , BLUE . filled ( ) ) ) ,
5259 ) ?;
5360
5461 // To avoid the IO failure being ignored silently, we manually call the present function
0 commit comments