This guide walks you through generating charts from BenchBox benchmark results. Whether you're inspecting results in a terminal, creating CI summaries, or comparing platforms, this guide covers the end-to-end workflow.
No additional dependencies are required. BenchBox visualization is built entirely on the Python standard library and renders directly to the terminal.
benchbox visualize --helpbenchbox visualizeThis auto-detects the most recent result in benchmark_runs/results/ and generates default charts.
See Chart Types for examples of each chart type.
benchbox visualize benchmark_runs/results/tpch_duckdb_sf1.jsonbenchbox visualize duckdb.json snowflake.json bigquery.jsonFor comprehensive "State of the Data Warehouse" style analysis:
benchbox visualize results/*.json --template flagshipGenerates:
- Performance bar chart (platform comparison)
- Query variance heatmap (per-query analysis)
- Cost-performance scatter (ROI analysis, if cost data available)
- Distribution box plot (consistency analysis)
For "DuckDB vs Snowflake" style comparisons:
benchbox visualize duckdb.json snowflake.json --template head_to_headGenerates:
- Performance bar chart (side-by-side comparison)
- Distribution box plot (consistency comparison)
- Query variance heatmap (per-query winners)
For tracking performance over time:
benchbox visualize runs/2024/*.json runs/2025/*.json --template trendsGenerates:
- Time-series line chart
- Latest snapshot bar chart
For ROI and cost analysis:
benchbox visualize cloud_results/*.json --template cost_optimizationGenerates:
- Cost-performance scatter
- Performance comparison bar chart
When no template or specific chart types are specified, --chart-type auto (the default) renders all supported chart types based on the available data:
| Data Characteristics | Charts Generated |
|---|---|
| Single platform | Query breakdown bar + distribution box |
| Multiple platforms | Platform comparison bar + heatmap |
| Cost data present | Adds cost-performance scatter |
| Multiple timestamps | Adds time-series trend |
# Let BenchBox decide
benchbox visualize results/*.json
# Specific charts only
benchbox visualize results/*.json --chart-type performance_barbenchbox visualize results/*.json --theme dark# Strip ANSI colors for file output
benchbox visualize results/*.json --no-color > charts.txt
# ASCII-only characters for basic terminals
benchbox visualize results/*.json --no-unicodebenchbox visualize results/*.json --chart-type performance_bar,cost_scatterCheck that your result JSON includes the required fields:
- Performance bar:
total_time_msoravg_time_ms - Distribution box: per-query
execution_time_msvalues - Heatmap: At least 2 platforms with query-level timings
- Cost scatter:
cost_summary.total_cost
Either specify files explicitly or ensure benchmark_runs/results/ contains JSON files:
benchbox visualize benchmark_runs/results/my_result.json- Check
--themesetting (light vs dark) - Ensure you're using the intended
--template - Verify terminal supports Unicode if using block characters (try
--no-unicodeas a fallback)
- Use templates for consistent chart sets across analyses
- Use
--no-colorwhen piping output to files - Name output files clearly when saving (
> comparison-2025-q1.txt) - Keep source JSON files for reproducibility
- Use MCP tools for programmatic chart generation in AI workflows
- Chart Types - Understand each chart type in detail
- Templates - Learn about predefined templates
- Customization - Fine-tune colors, themes, and styling
- CLI Reference - Complete command reference