BarChart

Struct BarChart 

Source
pub struct BarChart<C: PixelColor> { /* private fields */ }
Expand description

Bar chart implementation for displaying categorical data.

A bar chart displays data using rectangular bars with lengths proportional to the values they represent. This implementation supports both vertical and horizontal orientations, making it suitable for various data visualization needs on embedded displays.

§Features

  • Configurable bar orientation (vertical/horizontal)
  • Flexible bar width options (fixed, proportional, automatic)
  • Multi-color support with automatic color cycling
  • Customizable spacing and borders
  • Support for stacked bars (feature-gated)
  • Memory-efficient static allocation

§Memory Usage

The bar chart uses static allocation with:

  • Up to 16 bar colors stored in a heapless vector
  • Screen coordinate calculations for bar positioning
  • Efficient rendering with minimal temporary storage

§Examples

Basic vertical bar chart:

use embedded_charts::prelude::*;
use embedded_graphics::pixelcolor::Rgb565;

let chart: BarChart<Rgb565> = BarChart::new();
let mut data: StaticDataSeries<Point2D, 256> = StaticDataSeries::new();
data.push(Point2D::new(0.0, 10.0))?;
data.push(Point2D::new(1.0, 20.0))?;

Horizontal bar chart with custom styling:

use embedded_charts::prelude::*;
use embedded_graphics::pixelcolor::Rgb565;

let chart = BarChart::builder()
    .orientation(BarOrientation::Horizontal)
    .bar_width(BarWidth::Fixed(25))
    .spacing(3)
    .colors(&[Rgb565::GREEN])
    .build()?;

Implementations§

Source§

impl<C> BarChart<C>
where C: From<Rgb565> + PixelColor,

Source

pub fn new() -> Self

Create a new bar chart with default styling.

This creates a bar chart with:

  • Vertical orientation
  • Single blue bar color
  • Automatic bar width
  • 5-pixel spacing between bars
  • No borders
  • Default margins (10 pixels on all sides)
§Examples
use embedded_charts::prelude::*;
use embedded_graphics::pixelcolor::Rgb565;

let chart: BarChart<Rgb565> = BarChart::new();
Source

pub fn builder() -> BarChartBuilder<C>

Create a builder for configuring the bar chart.

The builder pattern provides a fluent interface for configuring all aspects of the bar chart before creation.

§Examples
use embedded_charts::prelude::*;
use embedded_graphics::pixelcolor::Rgb565;

let chart = BarChart::builder()
    .orientation(BarOrientation::Horizontal)
    .bar_width(BarWidth::Fixed(30))
    .spacing(8)
    .colors(&[Rgb565::GREEN])
    .build()?;
Source

pub fn set_style(&mut self, style: BarChartStyle<C>)

Set the bar chart style configuration.

This replaces the entire style configuration with the provided one. Use the builder pattern for more granular control.

§Arguments
  • style - The new bar chart style configuration
§Examples
use embedded_charts::prelude::*;
use embedded_graphics::pixelcolor::Rgb565;

let mut chart: BarChart<Rgb565> = BarChart::new();
let mut colors = heapless::Vec::new();
colors.push(Rgb565::BLUE).unwrap();
colors.push(Rgb565::RED).unwrap();

let style = BarChartStyle {
    bar_colors: colors,
    bar_width: BarWidth::Fixed(25),
    spacing: 3,
    border: None,
    stacked: false,
};
chart.set_style(style);
Source

pub fn style(&self) -> &BarChartStyle<C>

Get the current bar chart style configuration.

Returns a reference to the current style configuration, allowing inspection of current settings.

§Returns

A reference to the current BarChartStyle

Source

pub fn set_config(&mut self, config: ChartConfig<C>)

Set the chart configuration.

This includes general chart settings like title, background color, margins, and grid visibility.

§Arguments
  • config - The new chart configuration
Source

pub fn config(&self) -> &ChartConfig<C>

Get the chart configuration

Source

pub fn set_orientation(&mut self, orientation: BarOrientation)

Set the bar orientation

Source

pub fn orientation(&self) -> BarOrientation

Get the bar orientation

Trait Implementations§

Source§

impl<C> Chart<C> for BarChart<C>
where C: From<Rgb565> + PixelColor,

Source§

type Data = StaticDataSeries<Point2D, 256>

The type of data this chart can render
Source§

type Config = ChartConfig<C>

Configuration type for this chart
Source§

fn draw<D>( &self, data: &Self::Data, config: &Self::Config, viewport: Rectangle, target: &mut D, ) -> ChartResult<()>
where D: DrawTarget<Color = C>, Self::Data: DataSeries, <Self::Data as DataSeries>::Item: DataPoint, <<Self::Data as DataSeries>::Item as DataPoint>::X: Into<f32> + Copy + PartialOrd, <<Self::Data as DataSeries>::Item as DataPoint>::Y: Into<f32> + Copy + PartialOrd,

Draw the chart to the target display Read more
Source§

fn data_bounds(&self, _data: &Self::Data) -> ChartResult<()>

Get the data bounds for this chart
Source§

impl<C: Clone + PixelColor> Clone for BarChart<C>

Source§

fn clone(&self) -> BarChart<C>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<C: Debug + PixelColor> Debug for BarChart<C>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<C> Default for BarChart<C>
where C: From<Rgb565> + PixelColor,

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<C> Freeze for BarChart<C>
where C: Freeze,

§

impl<C> RefUnwindSafe for BarChart<C>
where C: RefUnwindSafe,

§

impl<C> Send for BarChart<C>
where C: Send,

§

impl<C> Sync for BarChart<C>
where C: Sync,

§

impl<C> Unpin for BarChart<C>
where C: Unpin,

§

impl<C> UnwindSafe for BarChart<C>
where C: UnwindSafe,

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> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

Source§

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.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.