1use plotlars::{Axis, OhlcPlot, Plot};
2use polars::prelude::*;
3
4fn main() {
5 let dates = vec![
7 "2024-01-01",
8 "2024-01-02",
9 "2024-01-03",
10 "2024-01-04",
11 "2024-01-05",
12 "2024-01-08",
13 "2024-01-09",
14 "2024-01-10",
15 "2024-01-11",
16 "2024-01-12",
17 "2024-01-15",
18 "2024-01-16",
19 "2024-01-17",
20 "2024-01-18",
21 "2024-01-19",
22 "2024-01-22",
23 "2024-01-23",
24 "2024-01-24",
25 "2024-01-25",
26 "2024-01-26",
27 ];
28
29 let open_prices = vec![
30 100.0, 102.5, 101.0, 103.5, 105.0, 104.5, 106.0, 105.5, 107.0, 108.5, 108.0, 110.0, 109.5,
31 111.0, 112.5, 112.0, 113.5, 113.0, 114.5, 115.0,
32 ];
33
34 let high_prices = vec![
35 103.0, 104.0, 103.5, 106.0, 107.5, 107.0, 108.5, 108.0, 109.5, 111.0, 110.5, 112.5, 112.0,
36 113.5, 115.0, 114.5, 116.0, 115.5, 117.0, 117.5,
37 ];
38
39 let low_prices = vec![
40 99.0, 101.5, 100.0, 102.5, 104.0, 103.5, 105.0, 104.5, 106.0, 107.5, 107.0, 109.0, 108.5,
41 110.0, 111.5, 111.0, 112.5, 112.0, 113.5, 114.0,
42 ];
43
44 let close_prices = vec![
45 102.5, 101.0, 103.5, 105.0, 104.5, 106.0, 105.5, 107.0, 108.5, 108.0, 110.0, 109.5, 111.0,
46 112.5, 112.0, 113.5, 113.0, 114.5, 115.0, 116.5,
47 ];
48
49 let stock_data = df! {
50 "date" => dates,
51 "open" => open_prices,
52 "high" => high_prices,
53 "low" => low_prices,
54 "close" => close_prices,
55 }
56 .unwrap();
57
58 OhlcPlot::builder()
59 .data(&stock_data)
60 .dates("date")
61 .open("open")
62 .high("high")
63 .low("low")
64 .close("close")
65 .plot_title("Stock Price")
66 .y_title("Price ($)")
67 .y_axis(&Axis::new().show_axis(true))
68 .build()
69 .plot();
70}