diff --git a/crates/nu-command/src/charting/histogram.rs b/crates/nu-command/src/charting/histogram.rs index 88832da9e6..4ff4d69690 100644 --- a/crates/nu-command/src/charting/histogram.rs +++ b/crates/nu-command/src/charting/histogram.rs @@ -249,25 +249,33 @@ fn histogram_impl( let percentage = format!("{:.2}%", quantile * 100_f64); let freq = "*".repeat((MAX_FREQ_COUNT * quantile).floor() as usize); - result.push(Value::Record { - cols: result_cols.clone(), - vals: vec![ - val.into_value(), - Value::Int { val: count, span }, - Value::Float { - val: quantile, - span, - }, - Value::String { - val: percentage, - span, - }, - Value::String { val: freq, span }, - ], - span, - }); + result.push(( + count, // attach count first for easily sorting. + Value::Record { + cols: result_cols.clone(), + vals: vec![ + val.into_value(), + Value::Int { val: count, span }, + Value::Float { + val: quantile, + span, + }, + Value::String { + val: percentage, + span, + }, + Value::String { val: freq, span }, + ], + span, + }, + )); } - Value::List { vals: result, span }.into_pipeline_data() + result.sort_by(|a, b| b.0.cmp(&a.0)); + Value::List { + vals: result.into_iter().map(|x| x.1).collect(), + span, + } + .into_pipeline_data() } #[cfg(test)]