Repository navigation
NULL values are visualized inconsistently across different plugins #43547
Description
Activity
- addedviz:charts:boxplotRelated to the Boxplot chartRelated to the Boxplot chartviz:charts:bubbleRelated to the Bubble chartRelated to the Bubble chartviz:charts:chordRelated to the Chord chartRelated to the Chord chartviz:charts:histogramRelated to the Histogram chartRelated to the Histogram chartviz:charts:radarRelated to the Radar chartRelated to the Radar chartviz:charts:treemapRelated to the Treemap chartRelated to the Treemap chart
on Aug 26, 2026 @vhogberg great write-up — the code confirms all three issues. Here's what's happening in each case:
Issue 1: NULL groups dropped in aggregate/boxplot
In
aggregate.py,df.groupby(by=groupby)is called withoutdropna=False. Pandas defaults todropna=True, so any group whose key isNaNis silently discarded before it reaches the frontend. The fix is straightforward: passdropna=Falsethere.Issue 2: Graph chart returns
'N/A'instead ofNULL_STRINGIn
Graph/transformProps.ts, thegetCategoryNamehelper returns the hardcoded string'N/A'for null categories instead of importing and usingNULL_STRINGfrom../constants. For comparison, the Bubble plugin correctly importsNULL_STRINGand uses it for its series name [1].For the Chord diagram, the legacy plugin's
transformProps.jspassesqueriesData[0].datastraight through, andChord.jsrenders node labels directly from thenodesarray without any null substitution — so anullnode renders as empty text.Issue 3: Bubble chart tooltip title is blank for NULL entities
In
Bubble/transformProps.ts,formatTooltipconstructs the tooltip title fromparams.data[3](the entity value). When the entity isnull, the title ends up empty —NULL_STRINGis never substituted in the formatter, even though it is imported and used for the series name on line 146.On consolidation:
NULL_STRINGis currently defined redundantly — insuperset/constants.pyas"<NULL>"[2] and separately in the eCharts plugin constants. The comment inconstants.pyeven notes: "If you change any constants, make sure to also change utils/common.js". CentralizingNULL_STRINGinto@superset-ui/coreand having all plugins import from there would prevent drift like the Graph'N/A'issue.I also see you've filed a related issue about drill-to-detail showing blank instead of
<NULL>— these likely share the same root cause on the frontend side.To reply, just mention @dosu.
Docs are dead. Just use Dosu.
- added 3 commits that reference this issue
on Aug 30, 2026 - added 8 commits that reference this issue
on Sep 29, 2026 - added 2 commits that reference this issue
on Oct 9, 2026
Bug description
NULL values are visualized inconsistently across different plugins, which can be misleading for users.
There are three main inconsistencies, listed in order of severity, in my opinion:
Perhaps these are three separate bugs with three separate fixes, but I wanted to report it in one sweep as general NULL visualization issues as I think it needs a general refactor/consolidation.
1. NULL value dimensions are not shown in certain charts
In certain charts, NULL value dimensions are not shown entirely. I've spotted this when comparing a box plot and bar chart using the same dataset and configuration, notice 7 boxes vs 8 bars:
Histograms seem to have the same issue.
I think it's because
aggregate.pycallsdf.groupby(by=groupby)withoutdropna=False. Pandas defaults to dropping NaN keys, so the whole group vanishes before it reaches the frontend.2. NULL_STRING is not shown next to NULL value dimensions in certain charts
NULL_STRING is not shown next to NULL value dimensions in certain charts, I've spotted it in Chord diagrams, graph charts, and partition charts.
Here's an example of it in a chord diagram, the biggest dimension is NULL, but it's not possible to tell as NULL_STRING is omitted:
For Graph, it seems transformProps returns the literal 'N/A' for null categories instead of NULL_STRING.
3. NULL_STRING is not shown in tooltips for NULL value dimensions in certain charts
Here's an example of a NULL value dimension for a bubble chart, the tooltip does not have NULL_STRING in the tooltip title:
I have spotted this same issue in Radar charts and Treemap charts, though it could be visible in more.
To reproduce
Thoughts
How null representation is defined is also scattered, refactor and consolidate a single null constant + formatter into @superset-ui/core, and pass dropna=False in postprocessing for issue 1.
Superset version
6.1.0
Python version
3.11
Node version
16
Browser
Chrome
Additional context
I use postgres as the DB
Checklist