Skip to content

Commit acffbcf

Browse files
chore(echarts): update quality score 86 and review feedback for cat-box-strip
1 parent d991192 commit acffbcf

2 files changed

Lines changed: 80 additions & 80 deletions

File tree

plots/cat-box-strip/implementations/javascript/echarts.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// anyplot.ai
22
// cat-box-strip: Box Plot with Strip Overlay
33
// Library: echarts 6.1.0 | JavaScript 22.23.2
4-
// Quality: 82/100 | Created: 2026-09-02
4+
// Quality: 86/100 | Created: 2026-09-02
55

66
//# anyplot-orientation: landscape
77
const t = window.ANYPLOT_TOKENS;

plots/cat-box-strip/metadata/javascript/echarts.yaml

Lines changed: 79 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ library: echarts
22
language: javascript
33
specification_id: cat-box-strip
44
created: '2026-09-02T14:56:05Z'
5-
updated: '2026-09-02T15:00:17Z'
5+
updated: '2026-09-02T15:08:47Z'
66
generated_by: claude-sonnet
77
workflow_run: 33644429982
88
issue: 2695
@@ -12,120 +12,120 @@ preview_url_light: https://storage.googleapis.com/anyplot-images/plots/cat-box-s
1212
preview_url_dark: https://storage.googleapis.com/anyplot-images/plots/cat-box-strip/javascript/echarts/plot-dark.png
1313
preview_html_light: https://storage.googleapis.com/anyplot-images/plots/cat-box-strip/javascript/echarts/plot-light.html
1414
preview_html_dark: https://storage.googleapis.com/anyplot-images/plots/cat-box-strip/javascript/echarts/plot-dark.html
15-
quality_score: 82
15+
quality_score: 86
1616
review:
1717
strengths:
18-
- Correct box-plot construction with Tukey 1.5×IQR whisker fencing (boxStats), and
19-
a deterministic seeded LCG + Box-Muller gaussian for reproducible synthetic data
20-
- Strip points are cleanly overlaid on the boxes with jitter (±0.28 category-width)
21-
and alpha=0.4, giving both summary statistics and raw distribution visibility
22-
as required by the spec
23-
- 'Full theme-adaptive chrome: axis lines, tick labels, grid, and title all pull
24-
from window.ANYPLOT_TOKENS; identical Imprint green (#009E73) data color between
25-
light and dark renders'
26-
- Canvas gate passes exactly (3200×1800 landscape), animation disabled, no import/require
27-
violations, idiomatic mount-node contract usage
18+
- Jitter width was widened (±0.28 → ±0.36) and marker size reduced (9 → 7) as requested
19+
in Attempt 1 feedback — individual strip points are now distinguishable in the
20+
dense 50-59/60+ groups instead of merging into solid blobs
21+
- Added a markLine trend annotation ("Median +55 min (20-29 → 60+)") directly addressing
22+
the prior DE-03/LM-02 feedback — gives the chart a clear focal point and a distinctive
23+
echarts-specific touch beyond the baseline boxplot+scatter combo
24+
- Correct box-plot construction with Tukey 1.5×IQR whisker fencing and a deterministic
25+
seeded LCG + Box-Muller gaussian for reproducible synthetic data
26+
- 'Full theme-adaptive chrome: axis lines, tick labels, grid, title, and the new
27+
markLine label all pull from window.ANYPLOT_TOKENS; identical Imprint green (#009E73)
28+
data color between light and dark renders'
29+
- Canvas gate passes exactly (3200×1800 landscape), animation disabled, idiomatic
30+
mount-node contract usage
2831
- Realistic, neutral dataset (marathon finish times by runner age group) with a
29-
clear, plausible upward trend across categories that gives the chart a storytelling
30-
angle
32+
clear, plausible upward trend across categories
3133
weaknesses:
32-
- Strip points heavily overlap into near-solid green blobs inside the boxes for
33-
the denser groups (50-59, 60+, ~34-45 points each) — increase jitter width slightly
34-
(e.g. 0.35-0.4 span) and/or drop symbolSize from 9 to ~6-7 to keep individual
35-
points distinguishable per the spec's 'points use jitter and transparency to reduce
36-
overlap' requirement
37-
- Design is monochromatic single-color across all five box/strip groups with no
38-
additional visual hierarchy or annotation calling out the age-related trend —
39-
consider a subtle callout or emphasis on the clearest group-to-group increase
40-
to strengthen data storytelling (DE-03)
41-
- Distinctive echarts-specific features are minimal beyond the basic boxplot+scatter
42-
composition mandated by the spec itself — combining a library-specific touch (e.g.
43-
markLine for an overall mean/median reference) would raise library mastery
34+
- The new markLine label ("Median +55 min...") is positioned at the midpoint of
35+
the trend line, which lands directly on top of the 40-49 group's box outline and
36+
its densest cluster of strip points — the dashed line and text visually collide
37+
with data marks instead of sitting in clear space
38+
- 50-59 and 60+ groups still show noticeably denser point overlap than the younger
39+
groups (larger sample sizes, 45 and 34 points) — individual points are now distinguishable
40+
but still touch/overlap frequently
41+
- Design remains monochromatic (single green hue across all elements) with limited
42+
additional visual polish beyond the new trend line
4443
image_description: |-
4544
Light render (plot-light.png):
46-
Background: Warm off-white, consistent with #FAF8F1not pure white, not dark.
47-
Chrome: Title "cat-box-strip · javascript · echarts · anyplot.ai" centered at top in dark ink, clearly legible. Legend ("Distribution", "Runners") below title in soft ink, readable. X-axis "Runner Age Group" (20-29, 30-39, 40-49, 50-59, 60+) and Y-axis "Finish Time (minutes)" (150-390) both fully legible with dark tick labels against the light background. Horizontal gridlines are thin and subtle, visible but not dominant.
48-
Data: Box plots outlined in Imprint green (#009E73) with transparent fill, showing median line, Q1/Q3 box, and whisker caps for each of the five age groups. Individual runner points (green, opacity 0.4) are jittered around each category's x-position, overlaid on the boxes. First/only data series correctly uses #009E73.
49-
Legibility verdict: PASS
45+
Background: Warm off-white (~#FAF8F1), not pure white.
46+
Chrome: Title "cat-box-strip · javascript · echarts · anyplot.ai" centered in dark ink, fully legible. Legend ("Distribution", "Runners") sits directly below the title. Axis titles ("Runner Age Group", "Finish Time (minutes)") and all tick labels render in dark/soft-ink and are clearly readable. Horizontal gridlines are thin and subtle.
47+
Data: Five box plots (transparent fill, #009E73 outline) show median/Q1/Q3/whiskers per age group, with jittered green strip points (opacity 0.4, symbolSize 7) overlaid — individual points are distinguishable, though the 50-59 and 60+ groups still show frequent overlap given larger sample sizes. A new dashed markLine trend annotation runs from the 20-29 median to the 60+ median, labeled "Median +55 min (20-29 → 60+)" — the label sits directly on top of the 40-49 box and its dense point cluster, creating visual overlap with data marks (text remains legible, but the placement is cluttered).
48+
Legibility verdict: PASS (all text readable; overlap is a data/annotation collision, not a legibility failure)
5049
5150
Dark render (plot-dark.png):
52-
Background: Warm near-black, consistent with #1A1A17not pure black, not light.
53-
Chrome: Title, legend, and both axis titles/tick labels render in light ink tones, clearly legible against the dark background. No dark-on-dark text observed anywhere (title, axis names, tick labels, legend all pass). Gridlines are faint but visible.
54-
Data: Box outlines and jittered strip points use the identical Imprint green (#009E73) as the light render — only the chrome (background, text, grid) flipped, confirming theme-adaptive tokens were threaded correctly through the whole option object.
55-
Legibility verdict: PASS
51+
Background: Warm near-black (~#1A1A17), not pure black.
52+
Chrome: Title, legend, and both axis titles/tick labels render in light ink and are clearly legible — no dark-on-dark failures. Gridlines faint but present.
53+
Data: Box outlines and jittered strip points use the identical #009E73 green as the light render — only chrome (background, text, grid, markLine color) flipped between themes, as required. The same markLine label overlap with the 40-49 box/points is present here too.
54+
Legibility verdict: PASS (all text readable; same overlap issue as light render, not a legibility failure)
5655
criteria_checklist:
5756
visual_quality:
58-
score: 27
57+
score: 26
5958
max: 30
6059
items:
6160
- id: VQ-01
6261
name: Text Legibility
6362
score: 7
6463
max: 8
6564
passed: true
66-
comment: All text readable in both themes; font sizes explicitly set via tokens
65+
comment: All text readable in both themes; markLine label crosses over box/points
66+
but stays legible
6767
- id: VQ-02
6868
name: No Overlap
69-
score: 6
69+
score: 4
7070
max: 6
7171
passed: true
72-
comment: No text collisions with other text or data
72+
comment: markLine trend label + dashed line overlaps the 40-49 box outline
73+
and its densest strip points
7374
- id: VQ-03
7475
name: Element Visibility
75-
score: 4
76+
score: 5
7677
max: 6
7778
passed: true
78-
comment: Dense groups (50-59, 60+) show heavy point overlap into near-solid
79-
blobs — jitter/marker size could be tuned further
79+
comment: Wider jitter + smaller markers improved point distinguishability;
80+
50-59/60+ still moderately dense
8081
- id: VQ-04
8182
name: Color Accessibility
8283
score: 2
8384
max: 2
8485
passed: true
85-
comment: High contrast, monochromatic green, no red-green reliance
86+
comment: Single-hue green, no red-green reliance
8687
- id: VQ-05
8788
name: Layout & Canvas
8889
score: 4
8990
max: 4
9091
passed: true
91-
comment: Canvas gate passed (3200x1800), no overflow, good proportions
92+
comment: Canvas gate passes 3200x1800, proportions clean, nothing clipped
9293
- id: VQ-06
9394
name: Axis Labels & Title
9495
score: 2
9596
max: 2
9697
passed: true
97-
comment: Descriptive axis titles with units (minutes)
98+
comment: Descriptive axis titles with units
9899
- id: VQ-07
99100
name: Palette Compliance
100101
score: 2
101102
max: 2
102103
passed: true
103-
comment: 'First series is #009E73, identical across themes, correct theme
104-
backgrounds'
104+
comment: 'First series #009E73, both renders theme-correct backgrounds'
105105
design_excellence:
106-
score: 10
106+
score: 13
107107
max: 20
108108
items:
109109
- id: DE-01
110110
name: Aesthetic Sophistication
111-
score: 4
111+
score: 5
112112
max: 8
113113
passed: false
114-
comment: Clean but monochromatic single-color treatment across all groups;
115-
no strong distinguishing polish
114+
comment: Monochromatic but the trend annotation adds a touch of polish over
115+
Attempt 1
116116
- id: DE-02
117117
name: Visual Refinement
118-
score: 3
118+
score: 4
119119
max: 6
120-
passed: false
121-
comment: Spines removed, subtle single-direction grid, generous whitespace
120+
passed: true
121+
comment: Minimal spines, subtle grid, generous whitespace
122122
- id: DE-03
123123
name: Data Storytelling
124-
score: 3
124+
score: 4
125125
max: 6
126-
passed: false
127-
comment: Age-related upward trend is visible but not emphasized with any annotation
128-
or focal treatment
126+
passed: true
127+
comment: New markLine highlights the age-related median trend, a clear focal
128+
point; placement overlap slightly undercuts execution
129129
spec_compliance:
130130
score: 15
131131
max: 15
@@ -135,26 +135,25 @@ review:
135135
score: 5
136136
max: 5
137137
passed: true
138-
comment: Box plot with strip overlay, correctly combined
138+
comment: Box plot with strip overlay, exactly as specified
139139
- id: SC-02
140140
name: Required Features
141141
score: 4
142142
max: 4
143143
passed: true
144-
comment: Median/Q1/Q3/whiskers plus jittered, transparent strip points all
145-
present
144+
comment: Median/Q1/Q3/whiskers plus jittered, transparent strip points
146145
- id: SC-03
147146
name: Data Mapping
148147
score: 3
149148
max: 3
150149
passed: true
151-
comment: Category on x, numeric value on y, all data shown
150+
comment: category on x, value on y, correctly mapped
152151
- id: SC-04
153152
name: Title & Legend
154153
score: 3
155154
max: 3
156155
passed: true
157-
comment: Title matches mandated format; legend labels are clear
156+
comment: Title matches mandated format; legend labels match series names
158157
data_quality:
159158
score: 15
160159
max: 15
@@ -164,20 +163,20 @@ review:
164163
score: 6
165164
max: 6
166165
passed: true
167-
comment: Shows median, quartiles, whiskers, individual points, and sample-size
168-
differences across groups
166+
comment: Shows distribution shape, outliers, and sample-size differences across
167+
groups
169168
- id: DQ-02
170169
name: Realistic Context
171170
score: 5
172171
max: 5
173172
passed: true
174-
comment: Marathon finish times by age group plausible and neutral
173+
comment: Marathon finish times by age group, plausible and neutral
175174
- id: DQ-03
176175
name: Appropriate Scale
177176
score: 4
178177
max: 4
179178
passed: true
180-
comment: 150-390 minute range is sensible for marathon finish times
179+
comment: Values in a realistic minutes range
181180
code_quality:
182181
score: 10
183182
max: 10
@@ -187,57 +186,58 @@ review:
187186
score: 3
188187
max: 3
189188
passed: true
190-
comment: Small, necessary helper functions only (LCG/gaussian, boxStats)
189+
comment: Helper functions are necessary (RNG, box stats), no over-engineering
191190
- id: CQ-02
192191
name: Reproducibility
193192
score: 2
194193
max: 2
195194
passed: true
196-
comment: Fixed-seed LCG, fully deterministic
195+
comment: Deterministic seeded LCG
197196
- id: CQ-03
198197
name: Clean Imports
199198
score: 2
200199
max: 2
201200
passed: true
202-
comment: No imports beyond the global echarts
201+
comment: Only the global echarts is used
203202
- id: CQ-04
204203
name: Code Elegance
205204
score: 2
206205
max: 2
207206
passed: true
208-
comment: No fake UI or simulated interactivity
207+
comment: No fake UI, appropriate complexity
209208
- id: CQ-05
210209
name: Output & API
211210
score: 1
212211
max: 1
213212
passed: true
214-
comment: Mount-node contract respected, animation:false set
213+
comment: 'Correct mount-node contract, animation: false'
215214
library_mastery:
216-
score: 5
215+
score: 7
217216
max: 10
218217
items:
219218
- id: LM-01
220219
name: Idiomatic Usage
221220
score: 4
222221
max: 5
223222
passed: true
224-
comment: Correct boxplot + scatter series composition, proper z-ordering and
225-
silent overlay
223+
comment: boxplot + scatter + markLine composition is idiomatic echarts
226224
- id: LM-02
227225
name: Distinctive Features
228-
score: 1
226+
score: 3
229227
max: 5
230228
passed: false
231-
comment: No echarts-specific features beyond the spec-mandated boxplot+scatter
232-
combo
229+
comment: markLine trend annotation is a genuine echarts-specific touch, though
230+
placement needs refinement
233231
verdict: APPROVED
234232
impl_tags:
235233
dependencies: []
236234
techniques:
237-
- layer-composition
235+
- annotations
236+
- jitter
238237
patterns:
239238
- data-generation
240239
- iteration-over-groups
241-
dataprep: []
240+
dataprep:
241+
- quantile-calculation
242242
styling:
243243
- alpha-blending

0 commit comments

Comments
 (0)