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 stock_data = LazyCsvReader::new(PlPath::new("data/stock_prices.csv"))
.finish()
.unwrap()
.collect()
.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("Candlestick Plot")
.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 19)
4fn main() {
5 let stock_data = LazyCsvReader::new(PlPath::new("data/stock_prices.csv"))
6 .finish()
7 .unwrap()
8 .collect()
9 .unwrap();
10
11 let increasing = Direction::new()
12 .line_color(Rgb(0, 200, 100))
13 .line_width(0.5);
14
15 let decreasing = Direction::new()
16 .line_color(Rgb(200, 50, 50))
17 .line_width(0.5);
18
19 CandlestickPlot::builder()
20 .data(&stock_data)
21 .dates("date")
22 .open("open")
23 .high("high")
24 .low("low")
25 .close("close")
26 .increasing(&increasing)
27 .decreasing(&decreasing)
28 .whisker_width(0.1)
29 .plot_title("Candlestick")
30 .y_title("price ($)")
31 .y_axis(&Axis::new().show_axis(true).show_grid(true))
32 .build()
33 .plot();
34}More examples
examples/subplot_grid.rs (line 191)
143fn irregular_grid_example() {
144 let dataset1 = LazyCsvReader::new(PlPath::new("data/penguins.csv"))
145 .finish()
146 .unwrap()
147 .select([
148 col("species"),
149 col("sex").alias("gender"),
150 col("flipper_length_mm").cast(DataType::Int16),
151 col("body_mass_g").cast(DataType::Int16),
152 ])
153 .collect()
154 .unwrap();
155
156 let axis = Axis::new()
157 .show_line(true)
158 .show_grid(true)
159 .value_thousands(true)
160 .tick_direction(TickDirection::OutSide);
161
162 let plot1 = Histogram::builder()
163 .data(&dataset1)
164 .x("body_mass_g")
165 .group("species")
166 .opacity(0.5)
167 .colors(vec![Rgb(255, 165, 0), Rgb(147, 112, 219), Rgb(46, 139, 87)])
168 .plot_title(Text::from("Histogram").x(0.0).y(1.35).size(14))
169 .x_title(Text::from("body mass (g)").x(0.94).y(-0.35))
170 .y_title(Text::from("count").x(-0.062).y(0.83))
171 .x_axis(&axis)
172 .y_axis(&axis)
173 .legend_title(Text::from("species"))
174 .legend(&Legend::new().x(0.87).y(1.2))
175 .build();
176
177 let dataset2 = LazyCsvReader::new(PlPath::new("data/stock_prices.csv"))
178 .finish()
179 .unwrap()
180 .collect()
181 .unwrap();
182
183 let increasing = Direction::new()
184 .line_color(Rgb(0, 200, 100))
185 .line_width(0.5);
186
187 let decreasing = Direction::new()
188 .line_color(Rgb(200, 50, 50))
189 .line_width(0.5);
190
191 let plot2 = CandlestickPlot::builder()
192 .data(&dataset2)
193 .dates("date")
194 .open("open")
195 .high("high")
196 .low("low")
197 .close("close")
198 .increasing(&increasing)
199 .decreasing(&decreasing)
200 .whisker_width(0.1)
201 .plot_title(Text::from("Candlestick").x(0.0).y(1.35).size(14))
202 .y_title(Text::from("price ($)").x(-0.06).y(0.76))
203 .y_axis(&Axis::new().show_axis(true).show_grid(true))
204 .build();
205
206 let dataset3 = LazyCsvReader::new(PlPath::new("data/heatmap.csv"))
207 .finish()
208 .unwrap()
209 .collect()
210 .unwrap();
211
212 let plot3 = HeatMap::builder()
213 .data(&dataset3)
214 .x("x")
215 .y("y")
216 .z("z")
217 .color_bar(
218 &ColorBar::new()
219 .value_exponent(ValueExponent::None)
220 .separate_thousands(true)
221 .tick_length(5)
222 .tick_step(5000.0),
223 )
224 .plot_title(Text::from("Heat Map").x(0.0).y(1.35).size(14))
225 .color_scale(Palette::Viridis)
226 .build();
227
228 SubplotGrid::irregular()
229 .plots(vec![
230 (&plot1, 0, 0, 1, 1),
231 (&plot2, 0, 1, 1, 1),
232 (&plot3, 1, 0, 1, 2),
233 ])
234 .rows(2)
235 .cols(2)
236 .v_gap(0.35)
237 .h_gap(0.05)
238 .title(
239 Text::from("Irregular Subplot Grid")
240 .size(16)
241 .font("Arial bold")
242 .y(0.95),
243 )
244 .build()
245 .plot();
246}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 Serialize for CandlestickPlot
impl Serialize for CandlestickPlot
impl PlotHelper for CandlestickPlot
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