pub struct CandlestickPlot { /* private fields */ }Expand description
A structure representing a Candlestick financial chart.
The CandlestickPlot struct facilitates the creation and customization of candlestick charts commonly used
for visualizing financial data such as stock prices. It supports custom styling for increasing/decreasing
values, whisker width configuration, hover information, and comprehensive layout customization
including range selectors and sliders for interactive time navigation.
§Arguments
data- A reference to theDataFramecontaining the data to be plotted.dates- A string slice specifying the column name for dates/timestamps.open- A string slice specifying the column name for opening values.high- A string slice specifying the column name for high values.low- A string slice specifying the column name for low values.close- A string slice specifying the column name for closing values.increasing- An optional reference to aDirectionstruct for customizing increasing candlesticks.decreasing- An optional reference to aDirectionstruct for customizing decreasing candlesticks.whisker_width- An optionalf64specifying the width of the whiskers (0-1 range).plot_title- An optionalTextstruct specifying the title of the plot.x_title- An optionalTextstruct specifying the title of the x-axis.y_title- An optionalTextstruct specifying the title of the y-axis.x_axis- An optional reference to anAxisstruct for customizing the x-axis.y_axis- An optional reference to anAxisstruct for customizing the y-axis.
§Examples
use plotlars::{Axis, CandlestickPlot, Direction, Plot, Rgb};
use polars::prelude::*;
let dates = vec![
"2024-01-01", "2024-01-02", "2024-01-03", "2024-01-04", "2024-01-05",
"2024-01-08", "2024-01-09", "2024-01-10", "2024-01-11", "2024-01-12",
];
let open_prices = vec![100.0, 102.5, 101.0, 103.5, 105.0, 104.5, 106.0, 105.5, 107.0, 108.5];
let high_prices = vec![103.0, 104.0, 103.5, 106.0, 107.5, 107.0, 108.5, 108.0, 109.5, 111.0];
let low_prices = vec![99.0, 101.5, 100.0, 102.5, 104.0, 103.5, 105.0, 104.5, 106.0, 107.5];
let close_prices = vec![102.5, 101.0, 103.5, 105.0, 104.5, 106.0, 105.5, 107.0, 108.5, 108.0];
let stock_data = df! {
"date" => dates,
"open" => open_prices,
"high" => high_prices,
"low" => low_prices,
"close" => close_prices,
}
.unwrap();
let increasing = Direction::new()
.line_color(Rgb(0, 200, 100))
.line_width(0.5);
let decreasing = Direction::new()
.line_color(Rgb(200, 50, 50))
.line_width(0.5);
CandlestickPlot::builder()
.data(&stock_data)
.dates("date")
.open("open")
.high("high")
.low("low")
.close("close")
.increasing(&increasing)
.decreasing(&decreasing)
.whisker_width(0.1)
.plot_title("Stock Price - Thin Whiskers")
.y_title("Price ($)")
.y_axis(&Axis::new().show_axis(true).show_grid(true))
.build()
.plot();
Implementations§
Source§impl CandlestickPlot
impl CandlestickPlot
Sourcepub fn builder<'f1, 'f2, 'f3, 'f4, 'f5, 'f6, 'f7, 'f8, 'f9, 'f10>() -> CandlestickPlotBuilder<'f1, 'f2, 'f3, 'f4, 'f5, 'f6, 'f7, 'f8, 'f9, 'f10>
pub fn builder<'f1, 'f2, 'f3, 'f4, 'f5, 'f6, 'f7, 'f8, 'f9, 'f10>() -> CandlestickPlotBuilder<'f1, 'f2, 'f3, 'f4, 'f5, 'f6, 'f7, 'f8, 'f9, 'f10>
Examples found in repository?
examples/candlestick.rs (line 67)
4fn main() {
5 // Create sample candlestick data
6 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 // Candlestick chart with whisker width customization
59 let increasing = Direction::new()
60 .line_color(Rgb(0, 200, 100)) // Green
61 .line_width(0.5);
62
63 let decreasing = Direction::new()
64 .line_color(Rgb(200, 50, 50)) // Red
65 .line_width(0.5);
66
67 CandlestickPlot::builder()
68 .data(&stock_data)
69 .dates("date")
70 .open("open")
71 .high("high")
72 .low("low")
73 .close("close")
74 .increasing(&increasing)
75 .decreasing(&decreasing)
76 .whisker_width(0.1) // Thin whiskers
77 .plot_title("Stock Price - Thin Whiskers")
78 .y_title("Price ($)")
79 .y_axis(&Axis::new().show_axis(true).show_grid(true))
80 .build()
81 .plot();
82}Trait Implementations§
Source§impl Clone for CandlestickPlot
impl Clone for CandlestickPlot
Source§fn clone(&self) -> CandlestickPlot
fn clone(&self) -> CandlestickPlot
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for CandlestickPlot
impl !RefUnwindSafe for CandlestickPlot
impl !Send for CandlestickPlot
impl !Sync for CandlestickPlot
impl Unpin for CandlestickPlot
impl !UnwindSafe for CandlestickPlot
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more