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 moreSource§impl PlotHelper for CandlestickPlot
impl PlotHelper for CandlestickPlot
fn get_layout(&self) -> &LayoutPlotly
fn get_traces(&self) -> &Vec<Box<dyn Trace + 'static>>
Auto 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