Every chart type produced by qsv viz, from the sample datasets in
examples/viz/. Generated with the viz feature; each chart is fully interactive.
--snap-max-dist to snap distant quakes to the nearest prefecture instead, or --no-snap to drop every offshore point. magnitude vs felt_reports is almost perfectly correlated (r=0.95); magnitude and felt_reports are right-skewed with flagged outliers; and the magnitude-over-time trend spikes during a September aftershock sequence. --bivariate adds an NMI association heatmap spanning every column type, not just the continuous-numeric ones the Pearson heatmap covers — it surfaces depth_km and felt_reports as strongly associated with occurrence_date (NMI=0.93 and 0.89), a temporal-clustering signal (the same September aftershock sequence) a Pearson matrix restricted to numeric pairs alone cannot express against a date column. Coordinate columns are shown on the map only, not re-charted as distributions. Rendered with the built-in plotly_dark theme.qsv viz smart seismic_events.csv --smarter --bivariate --theme plotly_dark \
--grid-cols 3 --geojson japan_prefectures.geojson -o smart_dashboard_smarter_geospatial.htmlqsv viz sunburst sales_sample.csv --cols region,product_category,payment_method \
-o sunburst.htmlqsv viz icicle sales_sample.csv --cols region,product_category,payment_method \
+ -o icicle.htmlqsv viz map quakes.csv --lat lat --lon lon --color magnitude \
- --size depth_km -o map.htmlqsv viz map quakes.csv --lat lat --lon lon --density --style carto-positron \
- -o map_density.htmlqsv viz geo quakes.csv --lat lat --lon lon --color magnitude \
- --projection natural-earth -o geo.htmlqsv viz choropleth country_stats.csv --locations iso3 --value gdp_usd_tn \
- --color-scale viridis -o choropleth.html--location-mode usa-states: state codes matched to Plotly's built-in US-state geometry on the token-free albers-usa projection (CONUS + Alaska/Hawaii insets) — no GeoJSON needed. States are colored by renewable-electricity share.qsv viz choropleth us_state_stats.csv --locations state --value renewable_electricity_pct \
- --location-mode usa-states -o choropleth_us_states.html--map draws the filled regions on an interactive MapLibre tile basemap (token-free carto-positron) instead of a projection. The regions come from a custom GeoJSON (--geojson local file or URL) matched to the data by --feature-id-key — here the near-rectangular western states, colored by installed wind capacity. The view auto-centers and zooms to the GeoJSON extent (shown full-width so the computed zoom frames the regions as the CLI does — a tile map's zoom is fixed, so a narrow grid cell would crop it).qsv viz choropleth western_states.csv --locations state --value wind_capacity_gw \
--geojson western_states.geojson --feature-id-key id --map --style carto-positron \
- -o choropleth_maplibre_geojson.htmlqsv viz smart stock_prices.csv --max-charts 8 -o smart_dashboard_time_series.htmlqsv viz smart us_cities.csv -o smart_dashboard_per_us_state_choropleth.htmlqsv viz smart customer_spend.csv --dictionary infer -o smart_dashboard_dictionary_infer_treemap.html
diff --git a/examples/viz/gen_gallery.py b/examples/viz/gen_gallery.py
index 2c2e213000..8561292a08 100755
--- a/examples/viz/gen_gallery.py
+++ b/examples/viz/gen_gallery.py
@@ -61,6 +61,11 @@
# so a normal `gen_gallery.py` run stays LLM-free and deterministic. To refresh them in-place, run
# with QSV_VIZ_REGEN_LLM=1 and your local LLM up (LM Studio / Ollama) — main() then treats this set
# as empty so these `--dictionary infer` figures are regenerated and re-cdnified like the others.
+# NOTE: because they are reused as-is, these figures intentionally LAG new smart-dashboard features
+# until an LLM-backed regen — e.g. they do not yet show the KPI/Completeness overview row that the
+# deterministic dashboards above carry. This is deferred on purpose: they will be regenerated in one
+# pass once describegpt emits the gauge_range/target dictionary hints, so the KPI row lands with its
+# gauges/deltas rather than as bare number tiles now.
PREGENERATED = {
"smart_dict_treemap.html",
"smart_dict_sunburst.html",
@@ -494,6 +499,11 @@
"rings (maxdepth) so labels stay legible instead of crowding a ~100-sector outer ring; click a "
"sector to drill in and the deeper ring's labels grow back. Hover always shows value + percent.",
False, ["sunburst", "sales_sample.csv", "--cols", "region,product_category,payment_method"]),
+ ("icicle", "Same three-level hierarchy (region -> product_category -> payment_method) as a rectangular "
+ "icicle: parents on the left, children fanning right, each rectangle sized by row count. The flat "
+ "left-to-right layout keeps deep labels readable where a sunburst's outer ring would crowd; click a "
+ "rectangle to zoom into that branch. Hover shows label + value + percent of parent.",
+ False, ["icicle", "sales_sample.csv", "--cols", "region,product_category,payment_method"]),
("map", "Earthquake points on token-free OpenStreetMap tiles; marker color = magnitude, size = depth.",
False, ["map", "quakes.csv", "--lat", "lat", "--lon", "lon", "--color", "magnitude", "--size", "depth_km"]),
("map (density)", "DensityMap heatmap of the same points on a light Carto basemap.",
diff --git a/examples/viz/smart_allegheny_dogs.html b/examples/viz/smart_allegheny_dogs.html
index 7ba34dda97..50d00319df 100644
--- a/examples/viz/smart_allegheny_dogs.html
+++ b/examples/viz/smart_allegheny_dogs.html
@@ -4,7 +4,7 @@