Skip to content

Commit d224801

Browse files
chore(makie): update quality score 89 and review feedback for point-basic
1 parent 9c99f8d commit d224801

2 files changed

Lines changed: 85 additions & 69 deletions

File tree

plots/point-basic/implementations/julia/makie.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# anyplot.ai
22
# point-basic: Point Estimate Plot
33
# Library: makie 0.21.9 | Julia 1.11.9
4-
# Quality: 86/100 | Created: 2026-09-05
4+
# Quality: 89/100 | Created: 2026-09-05
55

66
using CairoMakie
77
using Colors

plots/point-basic/metadata/julia/makie.yaml

Lines changed: 84 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ library: makie
22
language: julia
33
specification_id: point-basic
44
created: '2026-09-05T10:55:10Z'
5-
updated: '2026-09-05T10:59:10Z'
5+
updated: '2026-09-05T11:15:45Z'
66
generated_by: claude-sonnet
77
workflow_run: 33961745832
88
issue: 2551
@@ -12,58 +12,68 @@ preview_url_light: https://storage.googleapis.com/anyplot-images/plots/point-bas
1212
preview_url_dark: https://storage.googleapis.com/anyplot-images/plots/point-basic/julia/makie/plot-dark.png
1313
preview_html_light: null
1414
preview_html_dark: null
15-
quality_score: 86
15+
quality_score: 89
1616
review:
1717
strengths:
18-
- Correct forest/point-estimate plot type using rangebars! + scatter!, exactly matching
19-
the spec's category/estimate/lower_bound/upper_bound structure
20-
- Subgroups sorted by estimate value, creating a natural visual hierarchy from smallest
21-
to largest effect
22-
- Dashed reference line at x=0 (per spec's 'consider adding a reference line at
23-
zero') makes it easy to see which CIs cross the null
24-
- Error bars have visible whisker caps (whiskerwidth=14), satisfying the spec's
25-
'caps at endpoints' requirement
26-
- 'Theme-adaptive chrome correctly implemented: identical brand-green (#009E73)
27-
data color in both renders, chrome flips cleanly with no dark-on-dark or light-on-light
28-
issues'
29-
- 'Title format matches the exact required convention: ''point-basic · julia · makie
30-
· anyplot.ai'''
18+
- 'Attempt-1 feedback fully addressed: x/y tick label sizes raised 12→14 for mobile
19+
legibility, x/y axis-label sizes now explicit at 15, and the data-generation seed
20+
is now functional (rand(n) jitter) instead of a no-op Random.seed! call'
21+
- New filled-vs-hollow marker convention (filled = CI excludes the null, open =
22+
CI spans it) adds a real semantic layer and a clear visual hierarchy without introducing
23+
a second hue — the Label caption at fig[2,1] documents the convention cleanly,
24+
replacing the need for a formal legend
25+
- Correct forest/point-estimate plot using rangebars!(direction=:x) + scatter!,
26+
matching the spec's category/estimate/lower_bound/upper_bound structure exactly,
27+
with visible whisker caps (whiskerwidth=14)
28+
- Subgroups sorted by estimate value, creating a natural, easy-to-scan visual hierarchy
29+
from smallest to largest effect, reinforced by the dashed zero-reference line
30+
- 'Theme-adaptive chrome is fully correct: identical brand-green (#009E73) data
31+
color in both renders, with title, axis labels, ticks, spines and grid transparency
32+
correctly following INK/INK_SOFT/PAGE_BG tokens — no dark-on-dark or light-on-light
33+
failures'
34+
- 'Clean, KISS-structured code: flat script, only used imports (CairoMakie, Colors,
35+
Random), title format exactly matches the mandated convention'
3136
weaknesses:
32-
- Y-axis category tick labels and x tick labels (ticklabelsize=12) risk becoming
33-
hard to read once the image is scaled down for mobile thumbnails (~400px wide)
34-
— consider bumping ticklabelsize slightly for legibility resilience across responsive
35-
sizes
36-
- Visual design leans heavily on the documented style-guide defaults (spine removal,
37-
grid alpha) without much additional refinement beyond the single accent color
38-
— consider a subtle enhancement such as highlighting or annotating the subgroup(s)
39-
whose CI crosses zero to increase data storytelling impact
40-
- Random.seed!(42) is set but the dataset is fully hardcoded (no actual rand()/randn()
41-
calls), so the seed has no functional effect — either drop the unused Random import/seed
42-
or use it meaningfully
37+
- 'Canvas utilization is unbalanced: the axis block (y-category labels through the
38+
rightmost x=0.8 gridline) only occupies roughly the left ~28-30% of the 3200x1800
39+
canvas width, leaving a large, empty, un-balanced whitespace band on the right
40+
side of the figure with no title, legend, or content to fill it. Fix by widening
41+
xlims! further (or letting the axis stretch to the full column), reducing the
42+
Figure''s implicit right margin, or adding `colsize!(fig.layout, 1, Relative(1))`/checking
43+
why the Axis is not expanding to fill the 1x1 GridLayout cell edge-to-edge.'
44+
- 'Library Mastery is still fairly generic for Makie: rangebars! + scatter! + vlines!
45+
+ a Label caption are all correct but not distinctly showcase-y for Makie specifically
46+
— the same forest plot could be built nearly identically in most other plotting
47+
libraries.'
48+
- DE-01 aesthetic sophistication remains single-hue by (reasonable) domain convention;
49+
there's still room for one more polish touch (e.g., subtle row banding, or a light
50+
background band highlighting the 'no effect' zone around the dashed line) to push
51+
past a well-executed style-guide baseline.
4352
image_description: |-
4453
Light render (plot-light.png):
4554
Background: Warm off-white (#FAF8F1-consistent), not pure white, not dark.
46-
Chrome: Bold dark title "point-basic · julia · makie · anyplot.ai" centered at top, clearly readable. X-axis label "Standardized Mean Difference (95% CI)" and y-axis label "Subgroup" in dark ink, fully legible. Y-axis category tick labels (No prior therapy, Age < 40, Female, Age 40-59, Male, Age 60+, Prior therapy) and x-axis numeric ticks (0.0-0.8) render in a slightly softer dark gray, all readable against the light background. Subtle vertical gridlines only (y-gridlines disabled), a dashed reference line at x=0. Top and right spines removed.
47-
Data: Seven brand-green (#009E73) point markers with horizontal range-bar error bars and whisker caps, one per subgroup, sorted ascending by estimate.
55+
Chrome: Bold dark title "point-basic · julia · makie · anyplot.ai" centered above the axis block. X-axis label "Standardized Mean Difference (95% CI)" and y-axis label "Subgroup" in dark ink, both fully legible. Y-axis category tick labels (No prior therapy, Age < 40, Female, Age 40-59, Male, Age 60+, Prior therapy — sorted descending by estimate) and x-axis numeric ticks (0.0-0.8) render in soft dark gray, all clearly readable. Subtle vertical gridlines only (y-gridlines disabled), a dashed reference line at x=0, top/right spines removed. A small caption below the axis reads "○ open marker — 95% CI spans the null (SMD = 0)" in soft ink, fully visible and not clipped. Note: the axis block (labels + plot area) only spans roughly the left third of the canvas width, leaving a large unbalanced empty band on the right of the figure.
56+
Data: Seven brand-green (#009E73) range-bar error bars with whisker caps; five filled circle markers (CI excludes zero) and two hollow/open circle markers (CI spans zero) — a clean semantic distinction that reads at a glance.
4857
Legibility verdict: PASS.
4958
5059
Dark render (plot-dark.png):
5160
Background: Warm near-black (#1A1A17-consistent), not pure black, not light.
52-
Chrome: Same title, axis labels, and tick labels now rendered in light ink/off-white and soft light-gray tones respectively, clearly visible against the dark background. No dark-on-dark issues found on title, axis labels, or tick labels. Gridlines and dashed reference line remain subtle but visible. Spines and layout identical to the light render.
53-
Data: Same seven brand-green (#009E73) point markers and error bars — colors confirmed identical to the light render; only chrome (background, text, grid) flipped.
61+
Chrome: Same title, axis labels, tick labels, and caption now rendered in light ink/off-white and soft light-gray tones respectively — all clearly visible against the dark background. No dark-on-dark issues found on title, axis labels, tick labels, or the marker-convention caption. Gridlines and the dashed reference line remain subtle but visible. Spines and overall layout (including the same right-side whitespace imbalance) are identical to the light render.
62+
Data: Same seven brand-green (#009E73) markers and range-bars, with the identical filled/open split — colors confirmed identical to the light render; only chrome (background, text, grid) flipped.
5463
Legibility verdict: PASS.
5564
criteria_checklist:
5665
visual_quality:
57-
score: 28
66+
score: 27
5867
max: 30
5968
items:
6069
- id: VQ-01
6170
name: Text Legibility
62-
score: 6
71+
score: 7
6372
max: 8
6473
passed: true
65-
comment: Fonts explicitly set and readable in both themes at full size; ticklabelsize=12
66-
for both axes may thin out at mobile thumbnail scale (~400px)
74+
comment: Tick label sizes raised from 12 to 14, axis-label sizes explicit
75+
at 15, titlesize 20 — all readable in both themes; small residual risk at
76+
mobile thumbnail scale keeps this just short of perfect
6777
- id: VQ-02
6878
name: No Overlap
6979
score: 6
@@ -76,27 +86,28 @@ review:
7686
max: 6
7787
passed: true
7888
comment: Sparse data (7 points) rendered with prominent markersize=20 and
79-
linewidth=2.5 error bars
89+
linewidth=2.5 range-bars
8090
- id: VQ-04
8191
name: Color Accessibility
8292
score: 2
8393
max: 2
8494
passed: true
85-
comment: Single brand-green hue against dark ink text gives adequate contrast;
86-
no red-green reliance
95+
comment: Single brand-green hue plus filled/open marker distinction avoids
96+
relying on color alone for significance signaling
8797
- id: VQ-05
8898
name: Layout & Canvas
89-
score: 4
99+
score: 2
90100
max: 4
91-
passed: true
92-
comment: No clipping/overflow at canvas edges; canvas dimension gate passed;
93-
xlims/ylims comfortably contain all CI whiskers
101+
passed: false
102+
comment: Axis block (labels + plot area) fills only roughly the left ~30%
103+
of the 3200x1800 canvas width; the right side of the figure is empty, unbalanced
104+
whitespace with nothing to fill it
94105
- id: VQ-06
95106
name: Axis Labels & Title
96107
score: 2
97108
max: 2
98109
passed: true
99-
comment: Descriptive xlabel includes units/CI level; ylabel and title present
110+
comment: xlabel includes units/CI level, ylabel and title both present
100111
- id: VQ-07
101112
name: Palette Compliance
102113
score: 2
@@ -105,30 +116,31 @@ review:
105116
comment: 'First (only) series uses #009E73; backgrounds match #FAF8F1/#1A1A17;
106117
both renders theme-correct'
107118
design_excellence:
108-
score: 12
119+
score: 15
109120
max: 20
110121
items:
111122
- id: DE-01
112123
name: Aesthetic Sophistication
113-
score: 5
124+
score: 6
114125
max: 8
115-
passed: false
116-
comment: Sorting subgroups by estimate is a nice touch, but overall relies
117-
on a single accent color with no further custom palette work
126+
passed: true
127+
comment: Filled/hollow marker convention for null-crossing CIs is a thoughtful,
128+
above-default design choice; still single-hue by domain convention
118129
- id: DE-02
119130
name: Visual Refinement
120-
score: 3
131+
score: 4
121132
max: 6
122-
passed: false
123-
comment: Spines removed and grid subtle, but this mostly follows the documented
124-
style-guide skeleton rather than adding refinement beyond it
133+
passed: true
134+
comment: Spines removed, grid subtle and x-only, but whitespace balance is
135+
undermined by the large empty band on the right of the canvas
125136
- id: DE-03
126137
name: Data Storytelling
127-
score: 4
138+
score: 5
128139
max: 6
129140
passed: true
130-
comment: Ascending sort by estimate plus dashed zero-reference line creates
131-
a clear, interpretable hierarchy (forest-plot convention)
141+
comment: Descending sort, dashed zero line, and the new filled/open marker
142+
split let the viewer immediately see which subgroups have a statistically
143+
distinguishable effect
132144
spec_compliance:
133145
score: 15
134146
max: 15
@@ -156,8 +168,8 @@ review:
156168
score: 3
157169
max: 3
158170
passed: true
159-
comment: Title matches exact required format; no legend needed for single
160-
series
171+
comment: Title matches the exact required format; marker convention documented
172+
via caption in place of a formal legend
161173
data_quality:
162174
score: 15
163175
max: 15
@@ -167,8 +179,8 @@ review:
167179
score: 6
168180
max: 6
169181
passed: true
170-
comment: Shows category, estimate, CI, reference line, and caps — all plot-type
171-
aspects covered
182+
comment: Shows category, estimate, CI, reference line, caps, and both significant/non-significant
183+
subgroups
172184
- id: DQ-02
173185
name: Realistic Context
174186
score: 5
@@ -196,8 +208,8 @@ review:
196208
score: 2
197209
max: 2
198210
passed: true
199-
comment: Random.seed!(42) present (data is hardcoded so it has no functional
200-
effect, but requirement is nominally met)
211+
comment: Random.seed!(42) now has a functional effect via rand(n) jitter on
212+
estimate/half_width
201213
- id: CQ-03
202214
name: Clean Imports
203215
score: 2
@@ -209,37 +221,41 @@ review:
209221
score: 2
210222
max: 2
211223
passed: true
212-
comment: Appropriate complexity, no fake interactivity
224+
comment: Appropriate complexity, no fake interactivity, comment explains the
225+
marker-convention rationale
213226
- id: CQ-05
214227
name: Output & API
215228
score: 1
216229
max: 1
217230
passed: true
218231
comment: Saves plot-$(THEME).png with px_per_unit=2
219232
library_mastery:
220-
score: 6
233+
score: 7
221234
max: 10
222235
items:
223236
- id: LM-01
224237
name: Idiomatic Usage
225238
score: 4
226239
max: 5
227240
passed: true
228-
comment: Uses rangebars!, scatter!, vlines! — idiomatic Makie recipes for
229-
a forest plot
241+
comment: Uses rangebars!, scatter!, vlines!, and a GridLayout Label — idiomatic
242+
Makie composition for a forest plot
230243
- id: LM-02
231244
name: Distinctive Features
232-
score: 2
245+
score: 3
233246
max: 5
234247
passed: false
235-
comment: rangebars! with direction=:x and whiskerwidth is Makie-specific but
236-
not a showcase of deeper library capability
248+
comment: rangebars!(direction=:x) plus a second layered scatter! pass for
249+
open/filled markers uses some Makie-specific composition, but the overall
250+
approach could still be replicated fairly directly in other libraries
237251
verdict: APPROVED
238252
impl_tags:
239253
dependencies: []
240254
techniques:
241255
- manual-ticks
242-
patterns: []
256+
- annotations
257+
patterns:
258+
- data-generation
243259
dataprep: []
244260
styling:
245261
- grid-styling

0 commit comments

Comments
 (0)