The chart and the map, in lockstep.

Interactive Plotly charts rendered from feature attributes of layers on the map — with DataPlotty's signature bidirectional chart↔map selection linkage: lasso or box-select points in the chart and the corresponding features highlight on the map; select features on the map and the chart redraws. Six plot types, one fetch, OID-aligned selection. The QGIS DataPlotty plugin's capability, native to the desktop.

Scatter · Bar · BoxHistogram · Pie · ViolinBidirectional linkage Lasso → mapMap → chartGPKG config store
Bidirectional linkage

Select here, see it there

The linkage is the feature. A chart without the map connection is just a plot; a chart that drives and is driven by the map is an analysis tool.

  • Chart → map (Half A) — lasso/box-select or click points in the Plotly chart; the corresponding features are selected and highlighted on the map immediately. The OID travels with each trace as customdata, so selection is an O(1) lookup — never a re-query.
  • Map → chart (Half B) — select features on the map (or change the layer filter) and the chart redraws via Plotly.react (preserving zoom/pan/selection across the redraw).
  • Aggregating plots — histograms, bars, and pies select bins/categories, not points; the panel rebuilds the OID set client-side from the retained row data. No re-query on every click.
🔗

One fetch, OID-aligned

ChartData feature IDs travel as Plotly customdata. Selection events are O(1) OID lookups against the layer, never re-queries. A singular highlight handle (remove before re-set) keeps highlights from stacking. The layer's definitionExpression is captured-and-restored so "also filter layer" doesn't clobber the prior filter.

Six plot types

The charts analysts reach for

💧

Scatter

X/Y of two attributes — the classic correlation view. Click a point, see the feature.

📊

Bar

Categorical sums/counts. Select a bar, select every feature in that category on the map.

📦

Box

Distribution per category. Outliers are individually selectable.

📉

Histogram

Distribution of one attribute. Select a bin, select every feature in that range.

🥧

Pie

Proportion across categories. Click a slice, highlight its class on the map.

🎻

Violin

Distribution shape per category — the richer box-and-whisker.

Config that persists

Save a chart setup, re-open it later

Chart configs (plot type, layer, field bindings, layout) persist to a GeoPackage store — the same BookmarkStore pattern. Save the analysis setup, share it, or re-run it when the data updates.

💾

GPKG config store

Configs at <dataDir>/gpkg/chart_configs.gpkg, registered in gpkg_contents as attributes. Appears in the GeoPackage Manager + Connect-to-GIS catalog.

🔄

CRUD via REST

/api/charts/configs — list, create, update, delete. JSON properties/layout round-trip through JsonElement.

🔌

FeatureLayer + GraphicsLayer

The ChartSource abstraction backs both — one fetch path, OID-aligned, for served layers and ephemeral graphics alike.

The chart isn't separate from the map. It IS the map.

Bidirectional linkage, six plot types, persistent configs. Pair with ERP business data and spatial analysis.

Get Started