use super::funejson::Value; use super::charts_axis_axis_from_ticks::{axis_floats, axis_from_ticks, axis_strings, axis_to_value}; use super::charts_scale_band_scale::band_scale; /// A category axis: one tick at the centre of each band, labelled with the category. /// /// # Panics /// Panics on an empty or duplicated domain, padding outside 0..=1, or an /// unknown orient. pub fn band_axis( domain: &[String], range: &[f64], padding_inner: f64, padding_outer: f64, orient: &str, position: f64, tick_size: f64, ) -> Axis { let positions: Vec = domain .iter() .map(|v| band_scale(domain, range, v, padding_inner, padding_outer, 0.5).center) .collect(); axis_from_ticks(&positions, domain, range, orient, position, tick_size) } pub fn fune_vector(args: &[Value]) -> Value { axis_to_value(&band_axis( &axis_strings(&args[0]), &axis_floats(&args[1]), args[2].as_f64(), args[3].as_f64(), args[4].as_str(), args[5].as_f64(), args[6].as_f64(), )) }