0.19.1 - Hub listing text rewritten; author Geophilo; university
affiliation removed; documentation links use the standard geophilo.com
pages (manual.html, guide/); manual HTML no longer ships in the plugin
package.
0.19.0 - Added three analytical chart types across all four engines
(20 total): Lollipop (Cleveland dot-and-stem ranking), ECDF (empirical
cumulative distribution step curve), and Lorenz and Gini inequality
curve with exact Gini coefficients per group. Extended Facet by small
multiples to Vega-Lite and matplotlib so all four engines support
faceted grids. Added std and iqr dispersion aggregations, Gini
concentration insights in Explore and Suggest, and clamped KDE and
Violin support at zero for non-negative data.
0.18.0 - Small multiples: Facet by splits bar, line, area, scatter,
bubble and pie charts into panels on one shared axis and colour key.
Animated Explore: one play bar steps the dashboard's count bars,
histograms, scatter and row/completeness cards through a field. Fixed
clipped stacked axes and axes ending on raw values.
0.17.1 - Redesign plugin icon to high-end 3D tactile brand design with
circular teal pedestal, zero margin, and refreshed documentation
links.
0.16.0 - Completed reliable self-contained HTML, PNG, SVG and PDF
publishing with atomic writes and real QGIS runtime tests. Added clear
bounded-data provenance to chart status and Explore dashboards. Fixed
inactive render-export actions, PDF viewport fitting, Windows SVG/PDF
file locking, and package discovery outside a live QGIS session.
0.15.13 - Reverted 0.15.11's two-column pairing of the Charts tab's
X/Category+Y and Group/Color+Value/Size field pickers, back to one
field per row as before.
0.15.12 - Reverted the shorter tabs from 0.15.11 (back to the original
height) and widened them by the requested 1.2x instead. Brought back a
clear visual "this tab is open" indicator, this time as a small teal
dot icon on the active tab rather than a border — icons are a native
QTabBar feature that can't collide with this tab bar's box-model
quirks the way a border did in 0.15.9.
0.15.11 - Shorter, wider tabs: the tab strip's vertical padding is cut
roughly in half and the horizontal padding is increased, direct
feedback on how the tab row should read. The Charts tab's X/Category+Y
and Group/Color+Value/Size field pickers are now paired two-up in one
row each instead of four separate full-width rows, saving vertical
space in an already long card.
0.15.10 - Reverted 0.15.9's accent-stripe border on the active tab: a
real screenshot showed it covering part of the tab text with a white
strip instead. The active tab is shown with its background/text colour
again, same as every release before 0.15.9 — no border property on
this tab bar at all, since this native tab style has already shown
once that it does not reliably honour a custom QSS border addition.
Tab widths remain proportionate to each label (unchanged from 0.15.9).
0.15.9 - Redesigned the tab strip: each tab is now sized to its own
label instead of all three being forced to match the widest one
("Diagrams"), which had made "Charts" and "Labels" look oversized and
inconsistent. The active tab is now shown with a clean teal accent
stripe along its top edge, a clearer and more standard way to say
"this one is open" than a size/colour difference alone.
0.15.8 - The tab labels (Charts/Diagrams/Labels) are sized correctly
now on every machine: a second real screenshot showed "Diagrams" and
"Labels" still losing their last letter to ellipsis, meaning every
fixed padding number tried so far (0.15.2-0.15.7) still fell short of
real desktop font rendering. Instead of guessing another number, the
tab width is now measured at runtime from the actual font Qt is using
on your machine, with a generous safety margin — it can no longer be
wrong about its own text's width.
0.15.7 - Tabs are noticeably bigger than their own text now, not just
barely fitting. Suggest on a wide/tall layer no longer pulls every
field into memory before deciding whether to sample — the field count
itself is now bounded up front (the O(fields^2) scan cap alone wasn't
the whole story behind the earlier crash report). Removed the
toolbar's separate "About" icon; its content already lives in the
Guide. The Guide now links to the online documentation site. Histogram
axis labels are rounded to at most 3 decimal places instead of
Python's 6-significant-figure default, which could produce long,
unreadable numbers for small-magnitude fields.
0.15.6 - Found the actual cause of the tab-label clipping, from a user
screenshot: every tab was missing its first letter ("Charts"→"harts",
"Diagrams"→"iagram", "Labels"→"abels"), a known Qt/Windows quirk where
the native tab style's own left inset fights a custom stylesheet's
padding under real Windows theming (not reproducible in this project's
offscreen test harness, which is why earlier attempts missed it).
Fixed with extra left padding on each tab plus a small leading space
in the label text, so whatever gets eaten from the left is never a
real letter.
0.15.5 - Gave the tab strip more visible breathing room (more padding
around each label, without a fixed minimum width, so tabs still shrink
to fit any dock size). Suggest on a wide/tall layer now asks first:
use a fast representative sample (recommended, the previous default)
or scan the entire dataset. Either way the studio tells you which one
it used, and offers a full re-scan when a sample was used.
0.15.4 - Fixed a real regression from 0.15.2/0.15.3: forcing the tab
strip to expand and stay at a fixed minimum width meant it held that
size even on a dock too narrow to show it, and with the panel's
horizontal scrollbar disabled the overflow simply ran off the edge —
worse than the original clipping. Tabs are back to their natural,
always-fit size with a graceful fallback, and the panel's horizontal
scrollbar now shows when something genuinely needs it, so nothing can
go silently unreachable again. Also fixed the actual driver of an
oversized panel: two tab intro sentences (Map diagrams and Labels)
were missing word-wrap and were forcing the whole studio more than
1000px wide on their own. Fixed a real crash/hang risk in 💡 Suggest:
scanning every pair of numeric fields for the strongest correlation is
quadratic in field count — harmless on a normal layer, but a
grid/zonal-statistics layer with dozens of derived numeric columns and
up to 100,000 rows could turn that into hundreds of millions of
operations on the UI thread. The scan is now bounded to a sample of
rows and the first 40 numeric fields, so Suggest stays fast and safe
regardless of how wide or tall the layer is.
0.15.3 - The Map diagrams tab is now labelled "Diagrams" in the tab
strip: even with the wider, evenly-shared tab ribbon from 0.15.2, the
full label could still run tight against real desktop fonts on a
narrow dock. A shorter, guaranteed-to-fit label plus a text-elide
fallback (so any future overflow shows "…" instead of silently
clipping) removes the dependency on exact dock width or font metrics.
The Guide and Suggest button text now say "Diagrams tab" to match.
0.15.2 - The Charts / Map diagrams / Labels tabs now stretch to fill
the full width of their row instead of just their own text, giving the
longest label ("Map diagrams") much more room. The Render chart button
— the single most-used action in the studio — now carries a soft
salmon accent border so it stands out at a glance.
0.15.1 - Fixed two dock readability issues: on a short panel the
content was simply squashed instead of scrolling, so lower rows in the
Charts/Map diagrams/Labels tabs could become unreachable — the studio
now scrolls when there is not enough height, and still stretches to
fill a tall dock as before. Also fixed the active tab's label — the
selected tab turned bold while the others stayed regular weight, and
Qt does not re-lay-out a tab's box when only its font weight changes
on selection, so the wider bold glyphs no longer fit their own tab and
looked clipped/unreadable ("Map diagrams" worst of all). Every tab is
now the same weight, sized to fit from the start.
0.15.0 - Fixed the toolbar icon needing two clicks to actually open
the studio: a freshly created dock is already visible, so the old
toggle logic immediately flipped it back to hidden on that first
click. Map diagrams gain proportional sizing (scale each feature's
diagram between a small and a full-size one by a chosen field's value,
for classic proportional-symbol maps), an opacity control, and an
option to let crowded diagrams drop instead of always stacking every
one of them. Labels gain a new Chip preset — a rounded background
badge behind the text — alongside the existing halo presets.
0.14.0 - Add an explicitly approved SmartModeler GIS bridge that
selects one live project vector layer and renders 02viz's existing
offline smart chart suggestion without exposing paths, URLs,
expressions, exports, arbitrary methods or feature values.
0.12.0 - Reference and statistics overlays: add horizontal guide lines
and shaded bands to bar, line, area, scatter and bubble charts — the
mean, the median, a target value you type, a ±1σ band and the
inter-quartile (Q1–Q3) band — computed in pure Python from the plotted
values and drawn identically by every engine (ECharts, Plotly,
Vega-Lite and matplotlib). Turn any combination on from the Charts
tab; they read the same in light and dark themes and export with the
chart. Hardening: the studio no longer shells out to pip — when the
optional matplotlib/seaborn engine is missing it now shows the exact
install command for you to run yourself instead of running it, so the
plugin stays offline and side-effect free and passes the QGIS Plugin
Hub security scan cleanly.
0.11.1 - Removed the shared top-level "&02viz" QGIS menu; the studio
now only adds its toggle icon to its own toolbar, so it no longer
shows up as its own menu tab next to Help. The dock now also remembers
the last folder used to load an external table or export a chart as
HTML/PDF, across QGIS sessions.
0.10.1 - Hub upload compatibility fix: metadata text no longer
contains a raw percent sign, which QGIS Plugin Hub's INI parser treats
as interpolation syntax. Plugin code and features are unchanged from
0.10.0.
0.10.0 - Map diagrams, labels and a built-in guide, levelled up. Map
diagrams can now normalise their fields — Min–max (0–1), Z-score or
Log — so a pie or bar compares fields on different scales fairly
instead of one big-number field swamping the rest (each field's
min/max/mean/std are computed from the features and baked into the
diagram expressions; nothing is written to your data). Labels are now
expression-driven: round numbers, add a thousands separator, stack a
second field on its own line, add a prefix/suffix or units, change
case, word-wrap, or type any QGIS expression — with a live preview and
a first-feature sample (numeric formatting is applied only to numeric
fields, so a name on a second line is never wrapped in round()). A new
Guide button opens a full, offline user guide — what every part does,
the normalisation modes, copy-ready label-expression recipes and
prompts for an external AI assistant. A Suggest button reads the
active layer's fields and configures the most insightful chart for
you. Explore is richer: a collapsible field-summary table (type,
missing rate, distinct, range/top), an overall completeness KPI, a
normalised box plot putting every numeric field on one 0–1 axis, and
deeper insights (skew with a log-transform hint, outliers,
near-constant and mostly-empty fields, more correlations). Everything
stays fully offline with no new dependencies; verified end-to-end on
QGIS 3.44 and 4.
0.9.2 - Plotly and Vega-Lite no longer leave a blank embedded panel on
QGIS builds that ship only the legacy QtWebKit viewer (no
QtWebEngine): those engines need modern JavaScript the old viewer
cannot run, so their charts stayed blank in the dock although they
exported and opened fine in a browser (ECharts and matplotlib were
unaffected). The dock now detects this and shows a short "open in your
browser" explainer instead of a silent blank panel; the chart is still
built for the Export HTML and the browser (arrow) button. Switch to
ECharts for a chart that renders inside the dock, or install
QtWebEngine for QGIS.
0.9.1 - QGIS 4 (Qt6) readability: the studio panel now pins its own
light colours for every control, so it reads the same under any QGIS
theme. On QGIS 4 the dark application palette was bleeding into the
parts the panel did not explicitly colour — drop-down lists rendered
on a near-black background and field labels and check-box text faded
into the white cards. Combo pop-ups, line edits, spin boxes, the field
list, labels, check boxes and tool-tips are now explicitly styled
(white fields, dark text, teal selection). QGIS 3.x was unaffected and
is unchanged, as are the chart engines.
0.9.0 - Animated charts (play axis): pick a field such as a year and
the chart plays through its values — a bar-chart race, Gapminder-style
bubbles, composition or trends over time. Works in ECharts (timeline)
and Plotly (slider + play/pause) for bar, line, area, scatter, bubble
and pie. Categories, series colours and axes stay fixed across frames
(bubble sizes are scaled once, globally) so things animate in place,
and animated bars/points still click to select features on the map.
Pure-Python frame builder, fully offline, no new dependencies.
0.8.0 - Three-tab studio under one dock: Charts, Map diagrams and
Labels, sharing one layer selector. New Labels tab adds quick, elegant
feature labels (clean/halo/bold presets) via native QGIS labeling.
Embedded colour editor: the palette swatches are now inline in the
Charts tab — click to recolour, +/- to resize, no modal — plus a
chart-title override. Optional advanced engine: a matplotlib/seaborn
renderer for publication-grade static figures, listed in the engine
picker and installed on demand (auto-detect missing libraries,
one-click pip install into the QGIS Python). 'Zero2Visual' motto
surfaced in the dock and About. The vendored JS engines remain
zero-dependency and offline.
0.7.0 - Map diagrams: draw native QGIS pie / bar / stacked-bar / text
diagrams on every feature, on the map canvas, coloured with the studio
palette (they print and export to layout like any symbology). Custom
colour palettes: a swatch editor lets you define your own series
colours, applied identically across all three engines. Fixed charts
staying blank in the embedded dock while exporting fine (the viewer
now gives the chart a definite size and re-fits once laid out; an
'open in browser' escape hatch and the active web backend are shown).
Engine-first workflow: pick the renderer, then choose from the chart
types it can draw. Explore now ignores identifier columns (fid, id,
gid, uuid, primary keys) that carry no analytical meaning.
Publication-grade visual polish across every engine: one type system,
soft dashed gridlines, clean card tooltips and rounded bars.
0.6.0 - Six advanced chart types (17 total): Mean ± σ band (line with
shaded ±1 standard-deviation envelope), Mean ± σ bars (bars with
std-dev whiskers), Density (Gaussian KDE, optionally one curve per
group), Violin (mirrored KDE shapes with median dots), Radar/spider
(multi-axis comparison with per-axis scaling) and Pareto 80/20
(descending bars + cumulative-share line on a second axis). All
statistics computed in pure Python; rendered by all three engines from
one spec (radar is greyed out for Vega-Lite, no polar grammar). New
Colors selector with 8 curated palettes (Vivid, Colorblind safe,
Viridis, Sunset, Ocean, Earth, Berry, Grayscale print) that override
the theme palette identically in every engine, single charts and
Explore dashboards alike.
0.5.0 - Third engine: Vega-Lite (vendored vega + vega-lite, BSD-3)
renders 9 of the 11 chart types from the same spec contract, with full
chart-to-map clicks and map-to-chart cross-filter dimming; the dock
greys out chart types an engine cannot draw. Heatmap label contrast
fixed on sequential ramps in all engines (white labels only on dark
cells).
0.4.0 - Map-to-chart cross-filter: selecting features on the canvas
instantly dims non-selected items in the chart and in every dashboard
tile, without a re-render. Crash-safe selection bridge: chart clicks
now reach QGIS through the page title (titleChanged) instead of object
injection, fixing an access-violation crash in QGIS builds that ship
the legacy QtWebKit stack; the chart-to-map link now works identically
on WebKit and WebEngine.
0.3.1 - Package directory renamed to zero2viz to satisfy the QGIS
Plugin Hub PEP 8 package-name requirement (the previous digit-first
name was rejected at upload). Plugin display name, features and
behaviour are unchanged.
0.3.0 - One-click Explore: profile any layer into a complete
interactive dashboard (KPI cards, auto-charts per field, Pearson
correlation matrix, strongest-relationship scatter with trend,
plain-English insights), exportable as a single HTML. Zero-based
bar/area/histogram axes, heatmap label contrast, human number
formatting.
0.2.0 - Second engine (Plotly.js) + 5 new chart types (area, bubble,
heatmap, treemap, sunburst) = 11 total. Chart-to-map selection:
clicking a bar, slice or point selects the features on the canvas
(WebKit and WebEngine bridges). Live mode re-renders on selection
change. Group/color-by series, stacked bars and areas, Top-N with
Other, value sorting, least-squares trend line, 4 themes.
0.1.0 - Chart studio MVP: 6 chart types (bar, line, scatter,
histogram, pie, box) rendered by a vendored ECharts engine,
aggregation, selected-only mode, external CSV/XLSX tables, embedded
viewer with browser fallback, one-file HTML export.
yes
Token
2026-10-27T19:33:27.586892+00:00
3.28.0
4.99.0
None
no
Plugin Tags