What happened?
FilledAreaPlotOpDesc has a check (performTableCheck()) that decides, when a Line
Group is set, whether the groups share the same x-axis. If they don't, it shows an
error page instead of drawing the chart.
That check has one line that writes to X_values (capital X), while every other line in
the block uses lowercase x_values:
File: common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala (in performTableCheck(), ~line 124)
for _, group in grouped:
if x_values == None:
x_values = set(group[x].unique())
elif set(group[x].unique()).intersection(x_values):
X_values = x_values.union(set(group[x].unique())) # <-- capital X: result is never used
elif not set(group[x].unique()).intersection(x_values):
count += 1
if count > tolerance:
error = "X attributes not shared across groups"
X_values is assigned once and never read (not in this file, not anywhere in the
repo), so the union(...) is thrown away. Because of this, x_values never grows, and
the check compares each group only against the first group — instead of against all
groups seen so far.
Why this is a bug: it rejects inputs that plotly can render perfectly well.
px.area draws each line group as a stacked area and stacks them over the union of
all x-values (missing points filled with 0, stackgaps="infer zero" by default). So the
"compare against everything so far" (union) reading is the one that matches how the
chart actually works — the current code is both a dead store and too strict.
I confirmed this by running the check logic and px.area on the sample data below:
current code → error = "X attributes not shared across groups"; with X_values
changed to x_values → error = ""; and px.area renders the data fine (3 traces).
The line has been here since the operator was first added in #2086, and later PRs
(#2994, #3111) carried it over unchanged.
Suggested fix (low priority): please confirm the intent. If groups should be
compared against all x-values seen so far, this is a one-character fix
(X_values → x_values). If comparing only to the first group was intended, the dead
line should be removed.
How to reproduce?
Add a Filled Area Plot with Line Group set, and give it groups that overlap in a
chain but where the last group shares no x with the first:
| x |
y |
grp |
| 1 |
10 |
A |
| 2 |
10 |
A |
| 2 |
10 |
B |
| 3 |
10 |
B |
| 3 |
10 |
C |
| 4 |
10 |
C |
(A = {1,2}, B = {2,3}, C = {3,4}: A–B share 2, B–C share 3, but C shares nothing
with A.)
Config: X = x, Y = y, Line Group = grp.
- Expected: a stacked area chart (plotly renders this fine).
- Actual: no chart — an error page: "X attribute is not shared across all line groups."
Version/Branch
1.3.0-incubating-SNAPSHOT (main)
Commit Hash (Optional)
No response
What browsers are you seeing the problem on?
No response
Relevant log output
What happened?
FilledAreaPlotOpDeschas a check (performTableCheck()) that decides, when a LineGroup is set, whether the groups share the same x-axis. If they don't, it shows an
error page instead of drawing the chart.
That check has one line that writes to
X_values(capital X), while every other line inthe block uses lowercase
x_values:File:
common/workflow-operator/src/main/scala/org/apache/texera/amber/operator/visualization/filledAreaPlot/FilledAreaPlotOpDesc.scala(inperformTableCheck(), ~line 124)X_valuesis assigned once and never read (not in this file, not anywhere in therepo), so the
union(...)is thrown away. Because of this,x_valuesnever grows, andthe check compares each group only against the first group — instead of against all
groups seen so far.
Why this is a bug: it rejects inputs that plotly can render perfectly well.
px.areadraws each line group as a stacked area and stacks them over the union ofall x-values (missing points filled with 0,
stackgaps="infer zero"by default). So the"compare against everything so far" (union) reading is the one that matches how the
chart actually works — the current code is both a dead store and too strict.
I confirmed this by running the check logic and
px.areaon the sample data below:current code →
error = "X attributes not shared across groups"; withX_valueschanged to
x_values→error = ""; andpx.arearenders the data fine (3 traces).The line has been here since the operator was first added in #2086, and later PRs
(#2994, #3111) carried it over unchanged.
Suggested fix (low priority): please confirm the intent. If groups should be
compared against all x-values seen so far, this is a one-character fix
(
X_values→x_values). If comparing only to the first group was intended, the deadline should be removed.
How to reproduce?
Add a Filled Area Plot with Line Group set, and give it groups that overlap in a
chain but where the last group shares no x with the first:
(A = {1,2}, B = {2,3}, C = {3,4}: A–B share
2, B–C share3, but C shares nothingwith A.)
Config: X =
x, Y =y, Line Group =grp.Version/Branch
1.3.0-incubating-SNAPSHOT (main)
Commit Hash (Optional)
No response
What browsers are you seeing the problem on?
No response
Relevant log output