Skip to content

Commit 3442f68

Browse files
chore(pygal): update quality score 80 and review feedback for line-retention-cohort
1 parent fe16b8a commit 3442f68

2 files changed

Lines changed: 210 additions & 10 deletions

File tree

plots/line-retention-cohort/implementations/pygal.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
"""pyplots.ai
1+
""" pyplots.ai
22
line-retention-cohort: User Retention Curve by Cohort
3-
Library: pygal | Python 3.13
4-
Quality: pending | Created: 2026-03-16
3+
Library: pygal 3.1.0 | Python 3.14.3
4+
Quality: 80/100 | Created: 2026-03-16
55
"""
66

77
import numpy as np
Lines changed: 207 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
# Per-library metadata for pygal implementation of line-retention-cohort
2-
# Auto-generated by impl-generate.yml
3-
41
library: pygal
52
specification_id: line-retention-cohort
63
created: '2026-03-16T20:43:49Z'
7-
updated: '2026-03-16T20:43:49Z'
4+
updated: '2026-03-16T20:48:08Z'
85
generated_by: claude-opus-4-5-20251101
96
workflow_run: 23164943848
107
issue: 4572
@@ -13,7 +10,210 @@ library_version: 3.1.0
1310
preview_url: https://storage.googleapis.com/pyplots-images/plots/line-retention-cohort/pygal/plot.png
1411
preview_thumb: https://storage.googleapis.com/pyplots-images/plots/line-retention-cohort/pygal/plot_thumb.png
1512
preview_html: https://storage.googleapis.com/pyplots-images/plots/line-retention-cohort/pygal/plot.html
16-
quality_score: null
13+
quality_score: 80
1714
review:
18-
strengths: []
19-
weaknesses: []
15+
strengths:
16+
- Excellent data quality with realistic retention scenario and improving cohort
17+
trend
18+
- Perfect code quality — clean KISS structure with seed for reproducibility
19+
- Correct title format and legend labels with cohort sizes
20+
- Custom color palette with good accessibility
21+
weaknesses:
22+
- No visual differentiation between older and newer cohorts (opacity/line thickness)
23+
as suggested by spec
24+
- No reference/threshold line to provide benchmark context
25+
- Lines converge in later weeks without visual emphasis to guide the viewer
26+
- Lower chart area (0-20%) is mostly wasted space
27+
image_description: The plot displays a line chart with 5 cohort curves (Jan–May
28+
2025) on a white background. Each line starts at 100% retention at week 0 and
29+
decays over 12 weeks. Colors used are steel blue (Jan), coral/salmon (Feb), muted
30+
green (Mar), gold/amber (Apr), and muted purple (May). The Y-axis is labeled "Retained
31+
Users (%)" ranging 0–100 with horizontal gridlines every 10%. The X-axis is labeled
32+
"Weeks Since Signup" with values 0–12. The title reads "line-retention-cohort
33+
· pygal · pyplots.ai" at top center. A legend at the bottom shows each cohort
34+
with its sample size (e.g., "Jan 2025 (n=1,245)"). Dots mark each data point on
35+
the lines. Older cohorts (Jan) decay fastest to ~21%, while newer cohorts (May)
36+
retain ~40% by week 12, showing an improvement trend.
37+
criteria_checklist:
38+
visual_quality:
39+
score: 26
40+
max: 30
41+
items:
42+
- id: VQ-01
43+
name: Text Legibility
44+
score: 7
45+
max: 8
46+
passed: true
47+
comment: All font sizes explicitly set and readable; slightly oversized relative
48+
to library guide but effective
49+
- id: VQ-02
50+
name: No Overlap
51+
score: 6
52+
max: 6
53+
passed: true
54+
comment: No overlapping text anywhere; legend well-separated from data
55+
- id: VQ-03
56+
name: Element Visibility
57+
score: 5
58+
max: 6
59+
passed: true
60+
comment: Lines and dots visible but converge in later weeks making series
61+
harder to distinguish
62+
- id: VQ-04
63+
name: Color Accessibility
64+
score: 4
65+
max: 4
66+
passed: true
67+
comment: Five distinct hues with good contrast; no pure red-green pairing
68+
- id: VQ-05
69+
name: Layout & Canvas
70+
score: 2
71+
max: 4
72+
passed: true
73+
comment: Decent canvas usage but significant empty space in lower portion
74+
(0-20% range mostly unused)
75+
- id: VQ-06
76+
name: Axis Labels & Title
77+
score: 2
78+
max: 2
79+
passed: true
80+
comment: Descriptive labels with units on both axes
81+
design_excellence:
82+
score: 10
83+
max: 20
84+
items:
85+
- id: DE-01
86+
name: Aesthetic Sophistication
87+
score: 5
88+
max: 8
89+
passed: true
90+
comment: Custom palette, white background, explicit font sizing — above defaults
91+
but not publication-level
92+
- id: DE-02
93+
name: Visual Refinement
94+
score: 3
95+
max: 6
96+
passed: true
97+
comment: Subtle gray grid, X-guides hidden, legend at bottom; some refinement
98+
visible
99+
- id: DE-03
100+
name: Data Storytelling
101+
score: 2
102+
max: 6
103+
passed: false
104+
comment: Data shows trend but no visual emphasis — identical line weight/opacity,
105+
no reference line
106+
spec_compliance:
107+
score: 14
108+
max: 15
109+
items:
110+
- id: SC-01
111+
name: Plot Type
112+
score: 5
113+
max: 5
114+
passed: true
115+
comment: Correct line chart with multiple cohorts
116+
- id: SC-02
117+
name: Required Features
118+
score: 3
119+
max: 4
120+
passed: true
121+
comment: Missing opacity/thickness differentiation and reference line
122+
- id: SC-03
123+
name: Data Mapping
124+
score: 3
125+
max: 3
126+
passed: true
127+
comment: X = weeks, Y = retention %, cohort = series — all correct
128+
- id: SC-04
129+
name: Title & Legend
130+
score: 3
131+
max: 3
132+
passed: true
133+
comment: Correct title format and legend labels with cohort sizes
134+
data_quality:
135+
score: 14
136+
max: 15
137+
items:
138+
- id: DQ-01
139+
name: Feature Coverage
140+
score: 5
141+
max: 6
142+
passed: true
143+
comment: 5 cohorts with different decay rates showing improving retention
144+
trend
145+
- id: DQ-02
146+
name: Realistic Context
147+
score: 5
148+
max: 5
149+
passed: true
150+
comment: Realistic product analytics scenario with plausible cohort sizes
151+
- id: DQ-03
152+
name: Appropriate Scale
153+
score: 4
154+
max: 4
155+
passed: true
156+
comment: Retention 5-100%, cohort sizes ~1000-1600, 12-week tracking — all
157+
realistic
158+
code_quality:
159+
score: 10
160+
max: 10
161+
items:
162+
- id: CQ-01
163+
name: KISS Structure
164+
score: 3
165+
max: 3
166+
passed: true
167+
comment: Clean imports → data → style → chart → save structure
168+
- id: CQ-02
169+
name: Reproducibility
170+
score: 2
171+
max: 2
172+
passed: true
173+
comment: np.random.seed(42) set
174+
- id: CQ-03
175+
name: Clean Imports
176+
score: 2
177+
max: 2
178+
passed: true
179+
comment: All imports used
180+
- id: CQ-04
181+
name: Code Elegance
182+
score: 2
183+
max: 2
184+
passed: true
185+
comment: Clean, appropriate complexity with realistic decay model
186+
- id: CQ-05
187+
name: Output & API
188+
score: 1
189+
max: 1
190+
passed: true
191+
comment: Saves as plot.png, current API
192+
library_mastery:
193+
score: 6
194+
max: 10
195+
items:
196+
- id: LM-01
197+
name: Idiomatic Usage
198+
score: 4
199+
max: 5
200+
passed: true
201+
comment: Good use of pygal.Line, Style, legend_at_bottom, truncate_legend,
202+
range
203+
- id: LM-02
204+
name: Distinctive Features
205+
score: 2
206+
max: 5
207+
passed: false
208+
comment: Uses truncate_legend=-1 and stroke_style but doesn't leverage pygal's
209+
interactive SVG or other distinctive features
210+
verdict: REJECTED
211+
impl_tags:
212+
dependencies: []
213+
techniques: []
214+
patterns:
215+
- data-generation
216+
- iteration-over-groups
217+
dataprep: []
218+
styling:
219+
- grid-styling

0 commit comments

Comments
 (0)