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

source

pub fn new(id_source: impl Hash) -> Self

Give a unique id for each plot within the same Ui.

source

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.

source

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).

source

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.

source

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.

source

pub fn min_size(self, min_size: Vec2) -> Self

Minimum size of the plot view.

source

pub fn show_x(self, show_x: bool) -> Self

Show the x-value (e.g. when hovering). Default: true.

source

pub fn show_y(self, show_y: bool) -> Self

Show the y-value (e.g. when hovering). Default: true.

source

pub fn center_x_axis(self, on: bool) -> Self

Always keep the X-axis centered. Default: false.

source

pub fn center_y_axis(self, on: bool) -> Self

Always keep the Y-axis centered. Default: false.

source

pub fn allow_zoom<T>(self, on: T) -> Self
where T: Into<AxisBools>,

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.

source

pub fn allow_scroll(self, on: bool) -> Self

Whether to allow scrolling in the plot. Default: true.

source

pub fn allow_double_click_reset(self, on: bool) -> Self

Whether to allow double clicking to reset the view. Default: true.

source

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.

source

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.

source

pub fn boxed_zoom_pointer_button( self, boxed_zoom_pointer_button: PointerButton ) -> Self

Config the button pointer to use for boxed zooming. Default: Secondary

source

pub fn allow_drag<T>(self, on: T) -> Self
where T: Into<AxisBools>,

Whether to allow dragging in the plot to move the bounds. Default: true.

source

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

source

pub fn coordinates_formatter( self, position: Corner, formatter: CoordinatesFormatter ) -> Self

Show the pointer coordinates in the plot.

source

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.

source

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.

source

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.

source

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).

source

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).

source

pub fn auto_bounds_x(self) -> Self

Expand bounds to fit all items across the x axis, including values given by include_x.

source

pub fn auto_bounds_y(self) -> Self

Expand bounds to fit all items across the y axis, including values given by include_y.

source

pub fn legend(self, legend: Legend) -> Self

Show a legend including all named items.

source

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.

source

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].

source

pub fn show_grid(self, show: impl Into<AxisBools>) -> Self

Show a grid overlay on the plot.

Default: [true; 2].

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.

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.

source

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.

source

pub fn reset(self) -> Self

Resets the plot.

source

pub fn x_axis_label(self, label: impl Into<WidgetText>) -> Self

Set the x axis label of the main X-axis.

Default: no label.

source

pub fn y_axis_label(self, label: impl Into<WidgetText>) -> Self

Set the y axis label of the main Y-axis.

Default: no label.

source

pub fn x_axis_position(self, placement: VPlacement) -> Self

Set the position of the main X-axis.

source

pub fn y_axis_position(self, placement: HPlacement) -> Self

Set the position of the main Y-axis.

source

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.
source

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.
source

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.

source

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.

source

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.

source

pub fn show<R>( self, ui: &mut Ui, build_fn: impl FnOnce(&mut PlotUi) -> R ) -> PlotResponse<R>

Interact with and add items to the plot and finally draw it.

Auto Trait Implementations§

§

impl Freeze for Plot

§

impl !RefUnwindSafe for Plot

§

impl !Send for Plot

§

impl !Sync for Plot

§

impl Unpin for Plot

§

impl !UnwindSafe for Plot

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.