Struct maelstrom_plot::Plot
source · pub struct Plot { /* private fields */ }
Expand description
A 2D plot, e.g. a graph of a function.
Plot
supports multiple lines and points.
Implementations§
source§impl Plot
impl Plot
sourcepub fn data_aspect(self, data_aspect: f32) -> Self
pub fn data_aspect(self, data_aspect: f32) -> Self
width / height ratio of the data.
For instance, it can be useful to set this to 1.0
for when the two axes show the same
unit.
By default the plot window’s aspect ratio is used.
sourcepub fn view_aspect(self, view_aspect: f32) -> Self
pub fn view_aspect(self, view_aspect: f32) -> Self
width / height ratio of the plot region. By default no fixed aspect ratio is set (and width/height will fill the ui it is in).
sourcepub fn width(self, width: f32) -> Self
pub fn width(self, width: f32) -> Self
Width of plot. By default a plot will fill the ui it is in.
If you set Self::view_aspect
, the width can be calculated from the height.
sourcepub fn height(self, height: f32) -> Self
pub fn height(self, height: f32) -> Self
Height of plot. By default a plot will fill the ui it is in.
If you set Self::view_aspect
, the height can be calculated from the width.
sourcepub fn show_x(self, show_x: bool) -> Self
pub fn show_x(self, show_x: bool) -> Self
Show the x-value (e.g. when hovering). Default: true
.
sourcepub fn show_y(self, show_y: bool) -> Self
pub fn show_y(self, show_y: bool) -> Self
Show the y-value (e.g. when hovering). Default: true
.
sourcepub fn center_x_axis(self, on: bool) -> Self
pub fn center_x_axis(self, on: bool) -> Self
Always keep the X-axis centered. Default: false
.
sourcepub fn center_y_axis(self, on: bool) -> Self
pub fn center_y_axis(self, on: bool) -> Self
Always keep the Y-axis centered. Default: false
.
sourcepub fn allow_zoom<T>(self, on: T) -> Self
pub fn allow_zoom<T>(self, on: T) -> Self
Whether to allow zooming in the plot. Default: true
.
Note: Allowing zoom in one axis but not the other may lead to unexpected results if used in combination with data_aspect
.
sourcepub fn allow_scroll(self, on: bool) -> Self
pub fn allow_scroll(self, on: bool) -> Self
Whether to allow scrolling in the plot. Default: true
.
sourcepub fn allow_double_click_reset(self, on: bool) -> Self
pub fn allow_double_click_reset(self, on: bool) -> Self
Whether to allow double clicking to reset the view.
Default: true
.
sourcepub fn set_margin_fraction(self, margin_fraction: Vec2) -> Self
pub fn set_margin_fraction(self, margin_fraction: Vec2) -> Self
Set the side margin as a fraction of the plot size. Only used for auto bounds.
For instance, a value of 0.1
will add 10% space on both sides.
sourcepub fn allow_boxed_zoom(self, on: bool) -> Self
pub fn allow_boxed_zoom(self, on: bool) -> Self
Whether to allow zooming in the plot by dragging out a box with the secondary mouse button.
Default: true
.
Config the button pointer to use for boxed zooming. Default: Secondary
sourcepub fn allow_drag<T>(self, on: T) -> Self
pub fn allow_drag<T>(self, on: T) -> Self
Whether to allow dragging in the plot to move the bounds. Default: true
.
sourcepub fn label_formatter(
self,
label_formatter: impl Fn(&str, &PlotPoint) -> String + 'static
) -> Self
pub fn label_formatter( self, label_formatter: impl Fn(&str, &PlotPoint) -> String + 'static ) -> Self
Provide a function to customize the on-hover label for the x and y axis
sourcepub fn coordinates_formatter(
self,
position: Corner,
formatter: CoordinatesFormatter
) -> Self
pub fn coordinates_formatter( self, position: Corner, formatter: CoordinatesFormatter ) -> Self
Show the pointer coordinates in the plot.
sourcepub fn x_grid_spacer(
self,
spacer: impl Fn(GridInput) -> Vec<GridMark> + 'static
) -> Self
pub fn x_grid_spacer( self, spacer: impl Fn(GridInput) -> Vec<GridMark> + 'static ) -> Self
Configure how the grid in the background is spaced apart along the X axis.
Default is a log-10 grid, i.e. every plot unit is divided into 10 other units.
The function has this signature:
fn step_sizes(input: GridInput) -> Vec<GridMark>;
This function should return all marks along the visible range of the X axis.
step_size
also determines how thick/faint each line is drawn.
There are helpers for common cases, see log_grid_spacer
and uniform_grid_spacer
.
sourcepub fn y_grid_spacer(
self,
spacer: impl Fn(GridInput) -> Vec<GridMark> + 'static
) -> Self
pub fn y_grid_spacer( self, spacer: impl Fn(GridInput) -> Vec<GridMark> + 'static ) -> Self
Default is a log-10 grid, i.e. every plot unit is divided into 10 other units.
See Self::x_grid_spacer
for explanation.
sourcepub fn clamp_grid(self, clamp_grid: bool) -> Self
pub fn clamp_grid(self, clamp_grid: bool) -> Self
Clamp the grid to only be visible at the range of data where we have values.
Default: false
.
sourcepub fn include_x(self, x: impl Into<f64>) -> Self
pub fn include_x(self, x: impl Into<f64>) -> Self
Expand bounds to include the given x value.
For instance, to always show the y axis, call plot.include_x(0.0)
.
sourcepub fn include_y(self, y: impl Into<f64>) -> Self
pub fn include_y(self, y: impl Into<f64>) -> Self
Expand bounds to include the given y value.
For instance, to always show the x axis, call plot.include_y(0.0)
.
sourcepub fn auto_bounds_x(self) -> Self
pub fn auto_bounds_x(self) -> Self
Expand bounds to fit all items across the x axis, including values given by include_x
.
sourcepub fn auto_bounds_y(self) -> Self
pub fn auto_bounds_y(self) -> Self
Expand bounds to fit all items across the y axis, including values given by include_y
.
sourcepub fn show_background(self, show: bool) -> Self
pub fn show_background(self, show: bool) -> Self
Whether or not to show the background Rect
.
Can be useful to disable if the plot is overlaid over existing content.
Default: true
.
sourcepub fn show_axes(self, show: impl Into<AxisBools>) -> Self
pub fn show_axes(self, show: impl Into<AxisBools>) -> Self
Show axis labels and grid tick values on the side of the plot.
Default: [true; 2]
.
sourcepub fn show_grid(self, show: impl Into<AxisBools>) -> Self
pub fn show_grid(self, show: impl Into<AxisBools>) -> Self
Show a grid overlay on the plot.
Default: [true; 2]
.
sourcepub fn link_axis(
self,
group_id: impl Into<Id>,
link_x: bool,
link_y: bool
) -> Self
pub fn link_axis( self, group_id: impl Into<Id>, link_x: bool, link_y: bool ) -> Self
Add this plot to an axis link group so that this plot will share the bounds with other plots in the same group. A plot cannot belong to more than one axis group.
sourcepub fn link_cursor(
self,
group_id: impl Into<Id>,
link_x: bool,
link_y: bool
) -> Self
pub fn link_cursor( self, group_id: impl Into<Id>, link_x: bool, link_y: bool ) -> Self
Add this plot to a cursor link group so that this plot will share the cursor position with other plots in the same group. A plot cannot belong to more than one cursor group.
sourcepub fn sharp_grid_lines(self, enabled: bool) -> Self
pub fn sharp_grid_lines(self, enabled: bool) -> Self
Round grid positions to full pixels to avoid aliasing. Improves plot appearance but might have an undesired effect when shifting the plot bounds. Enabled by default.
sourcepub fn x_axis_label(self, label: impl Into<WidgetText>) -> Self
pub fn x_axis_label(self, label: impl Into<WidgetText>) -> Self
Set the x axis label of the main X-axis.
Default: no label.
sourcepub fn y_axis_label(self, label: impl Into<WidgetText>) -> Self
pub fn y_axis_label(self, label: impl Into<WidgetText>) -> Self
Set the y axis label of the main Y-axis.
Default: no label.
sourcepub fn x_axis_position(self, placement: VPlacement) -> Self
pub fn x_axis_position(self, placement: VPlacement) -> Self
Set the position of the main X-axis.
sourcepub fn y_axis_position(self, placement: HPlacement) -> Self
pub fn y_axis_position(self, placement: HPlacement) -> Self
Set the position of the main Y-axis.
sourcepub fn x_axis_formatter(
self,
fmt: impl Fn(f64, usize, &RangeInclusive<f64>) -> String + 'static
) -> Self
pub fn x_axis_formatter( self, fmt: impl Fn(f64, usize, &RangeInclusive<f64>) -> String + 'static ) -> Self
Specify custom formatter for ticks on the main X-axis.
Arguments of fmt
:
- raw tick value as
f64
. - maximum requested number of characters per tick label.
- currently shown range on this axis.
sourcepub fn y_axis_formatter(
self,
fmt: impl Fn(f64, usize, &RangeInclusive<f64>) -> String + 'static
) -> Self
pub fn y_axis_formatter( self, fmt: impl Fn(f64, usize, &RangeInclusive<f64>) -> String + 'static ) -> Self
Specify custom formatter for ticks on the main Y-axis.
Arguments of fmt
:
- raw tick value as
f64
. - maximum requested number of characters per tick label.
- currently shown range on this axis.
sourcepub fn y_axis_width(self, digits: usize) -> Self
pub fn y_axis_width(self, digits: usize) -> Self
Set the main Y-axis-width by number of digits
The default is 5 digits.
Todo: This is experimental. Changing the font size might break this.
sourcepub fn custom_x_axes(self, hints: Vec<AxisHints>) -> Self
pub fn custom_x_axes(self, hints: Vec<AxisHints>) -> Self
Set custom configuration for X-axis
More than one axis may be specified. The first specified axis is considered the main axis.
sourcepub fn custom_y_axes(self, hints: Vec<AxisHints>) -> Self
pub fn custom_y_axes(self, hints: Vec<AxisHints>) -> Self
Set custom configuration for left Y-axis
More than one axis may be specified. The first specified axis is considered the main axis.