styles: &HashMap<&str, &Style>,
a: Axis3,
footnotes: &pivot::Footnotes,
- level_ofs: usize,
+ level_ofs: &mut usize,
dims: &mut Vec<Dim<'b>>,
) -> Vec<&'b Series> {
let variables = variables
.into_iter()
- .zip(level_ofs..)
+ .zip(*level_ofs..)
.map(|(variable_name, level)| {
series
.get(variable_name)
.map(|s| (s, level))
})
.collect::<Vec<_>>();
+ *level_ofs += variables.len();
let mut dim_vars = Vec::new();
let mut categorical_vars = Vec::new();
for var in variables {
let mut dims = Vec::new();
let mut level_ofs = 1;
- let mut dim_series = EnumMap::default();
- for (axis, dimension) in graph.faceting.dimensions() {
- dim_series[axis] = decode_dimensions(
+ let dim_series = graph.faceting.dimensions().map(|axis, dimension| {
+ decode_dimensions(
dimension.iter().copied(),
&series,
&axes,
&styles,
axis,
&footnotes,
- level_ofs,
+ &mut level_ofs,
&mut dims,
- );
- level_ofs += dimension.len();
- }
+ )
+ });
let current_layer = dim_series[Axis3::Z]
.iter()
})
.collect::<Vec<_>>();
- let mut coords = Vec::with_capacity(dims.len());
- let (cell_formats, format_map) = graph.interval.labeling.decode_format_map(&series);
let cell_footnotes = graph
.interval
.footnotes()
.and_then(|footnotes| series.get(footnotes.variable.as_str()));
let mut data = HashMap::new();
if let Some(cell) = series.get("cell") {
+ let mut coords = Vec::with_capacity(dims.len());
+ let (cell_formats, format_map) = graph.interval.labeling.decode_format_map(&series);
'outer: for (i, cell) in cell.values.iter().enumerate() {
coords.clear();
for dim in &dims {