pub struct Histogram { /* private fields */ }Expand description
A structure representing a histogram.
The Histogram struct facilitates the creation and customization of histograms with various options
for data selection, layout configuration, and aesthetic adjustments. It supports grouping of data,
opacity settings, and customizable markers and colors.
§Arguments
data- A reference to theDataFramecontaining the data to be plotted.x- A string slice specifying the column name to be used for the x-axis (independent variable).group- An optional string slice specifying the column name to be used for grouping data points.sort_groups_by- Optional comparatorfn(&str, &str) -> std::cmp::Orderingto control group ordering. Groups are sorted lexically by default.facet- An optional string slice specifying the column name to be used for faceting (creating multiple subplots).facet_config- An optional reference to aFacetConfigstruct for customizing facet behavior (grid dimensions, scales, gaps, etc.).opacity- An optionalf64value specifying the opacity of the plot markers (range: 0.0 to 1.0).color- An optionalRgbvalue specifying the color of the markers to be used for the plot. This is used whengroupis not specified.colors- An optional vector ofRgbvalues specifying the colors to be used for the plot. This is used whengroupis specified to differentiate between groups.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.legend_title- An optionalTextstruct specifying the title of the legend.x_axis- An optional reference to anAxisstruct for customizing the x-axis.y_axis- An optional reference to anAxisstruct for customizing the y-axis.legend- An optional reference to aLegendstruct for customizing the legend of the plot (e.g., positioning, font, etc.).
§Example
use plotlars::{Axis, Histogram, Legend, Plot, Rgb, Text, TickDirection};
use polars::prelude::*;
let dataset = LazyCsvReader::new(PlRefPath::new("data/penguins.csv"))
.finish()
.unwrap()
.select([
col("species"),
col("sex").alias("gender"),
col("flipper_length_mm").cast(DataType::Int16),
col("body_mass_g").cast(DataType::Int16),
])
.collect()
.unwrap();
let axis = Axis::new()
.show_line(true)
.show_grid(true)
.value_thousands(true)
.tick_direction(TickDirection::OutSide);
Histogram::builder()
.data(&dataset)
.x("body_mass_g")
.group("species")
.opacity(0.5)
.colors(vec![
Rgb(255, 165, 0),
Rgb(147, 112, 219),
Rgb(46, 139, 87),
])
.plot_title(
Text::from("Histogram")
.font("Arial")
.size(18)
)
.x_title(
Text::from("body mass (g)")
.font("Arial")
.size(15)
)
.y_title(
Text::from("count")
.font("Arial")
.size(15)
)
.legend_title(
Text::from("species")
.font("Arial")
.size(15)
)
.x_axis(&axis)
.y_axis(&axis)
.legend(
&Legend::new()
.x(0.9)
)
.build()
.plot();
Implementations§
Source§impl Histogram
impl Histogram
Sourcepub fn builder<'f1, 'f2, 'f3, 'f4, 'f5, 'f6, 'f7, 'f8>() -> HistogramBuilder<'f1, 'f2, 'f3, 'f4, 'f5, 'f6, 'f7, 'f8>
pub fn builder<'f1, 'f2, 'f3, 'f4, 'f5, 'f6, 'f7, 'f8>() -> HistogramBuilder<'f1, 'f2, 'f3, 'f4, 'f5, 'f6, 'f7, 'f8>
Examples found in repository?
examples/faceting.rs (line 255)
243fn histogram_example() {
244 let csv_path = "data/temperature_seasonal.csv";
245
246 let df = CsvReadOptions::default()
247 .with_has_header(true)
248 .try_into_reader_with_file_path(Some(csv_path.into()))
249 .unwrap()
250 .finish()
251 .unwrap();
252
253 let facet_config = FacetConfig::new().rows(2).cols(3);
254
255 Histogram::builder()
256 .data(&df)
257 .x("temperature")
258 .group("season")
259 .facet("city")
260 .facet_config(&facet_config)
261 .opacity(0.5)
262 .plot_title("Seasonal Temperature Distribution by City")
263 .x_title("Temperature (°C)")
264 .y_title("Frequency")
265 .build()
266 .plot();
267}More examples
examples/histogram.rs (line 23)
4fn main() {
5 let dataset = LazyCsvReader::new(PlRefPath::new("data/penguins.csv"))
6 .finish()
7 .unwrap()
8 .select([
9 col("species"),
10 col("sex").alias("gender"),
11 col("flipper_length_mm").cast(DataType::Int16),
12 col("body_mass_g").cast(DataType::Int16),
13 ])
14 .collect()
15 .unwrap();
16
17 let axis = Axis::new()
18 .show_line(true)
19 .show_grid(true)
20 .value_thousands(true)
21 .tick_direction(TickDirection::OutSide);
22
23 Histogram::builder()
24 .data(&dataset)
25 .x("body_mass_g")
26 .group("species")
27 .opacity(0.5)
28 .colors(vec![Rgb(255, 165, 0), Rgb(147, 112, 219), Rgb(46, 139, 87)])
29 .plot_title(Text::from("Histogram").font("Arial").size(18))
30 .x_title(Text::from("body mass (g)").font("Arial").size(15))
31 .y_title(Text::from("count").font("Arial").size(15))
32 .legend_title(Text::from("species").font("Arial").size(15))
33 .x_axis(&axis)
34 .y_axis(&axis)
35 .legend(&Legend::new().x(0.9))
36 .build()
37 .plot();
38}examples/subplot_grid.rs (line 162)
143fn irregular_grid_example() {
144 let dataset1 = LazyCsvReader::new(PlRefPath::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(PlRefPath::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(PlRefPath::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§
impl PlotHelper for Histogram
Auto Trait Implementations§
impl Freeze for Histogram
impl !RefUnwindSafe for Histogram
impl !Send for Histogram
impl !Sync for Histogram
impl Unpin for Histogram
impl UnsafeUnpin for Histogram
impl !UnwindSafe for Histogram
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