-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplotnine.yaml
More file actions
222 lines (222 loc) · 7.39 KB
/
plotnine.yaml
File metadata and controls
222 lines (222 loc) · 7.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
library: plotnine
specification_id: area-basic
created: '2025-12-23T00:48:00Z'
updated: '2026-02-11T22:27:13Z'
generated_by: claude-opus-4-6
workflow_run: 20447970072
issue: 0
python_version: 3.14.2
library_version: 0.15.3
preview_url: https://storage.googleapis.com/pyplots-images/plots/area-basic/plotnine/plot.png
preview_thumb: https://storage.googleapis.com/pyplots-images/plots/area-basic/plotnine/plot_thumb.png
preview_html: null
quality_score: 97
impl_tags:
dependencies: []
techniques:
- annotations
- layer-composition
patterns:
- data-generation
dataprep:
- time-series
styling:
- alpha-blending
- grid-styling
review:
strengths:
- Excellent visual quality with perfectly sized text elements matching library guidelines
(24/20/16pt hierarchy)
- Effective use of plotnine grammar of graphics with multi-layer composition (geom_area
+ geom_line + geom_smooth)
- Realistic, well-contextualized data scenario (website visitors) with meaningful
patterns (weekly cycles, upward trend, increasing variance)
- 'Clean, colorblind-safe color scheme using pyplots primary palette (#306998, #FFD43B)'
- Subtle grid styling with alpha=0.3 and removed minor gridlines creates clean appearance
- Peak annotation adds informational value without cluttering
weaknesses:
- The yellow LOWESS trend line lacks a legend or label explaining what it represents
— a viewer unfamiliar with the chart must guess its purpose
- Feature coverage could be slightly richer (e.g., showing a flat period or a sudden
spike/dip to demonstrate more area chart characteristics)
image_description: The plot displays a basic area chart of daily website visitors
over January 2024. The area beneath the data line is filled with a semi-transparent
steel blue (#306998, alpha ~0.35), bounded by a solid blue outline (line weight
1.5). A yellow/gold (#FFD43B) LOWESS trend line smoothly traces through the data,
highlighting the overall upward trend. A bold blue "Peak" annotation sits at the
upper-right, marking the highest visitor count (~8,200 on Jan 30). The x-axis
shows dates from Jan 01 to Jan 29 in "Mon DD" format, labeled "Date (January 2024)".
The y-axis shows visitor counts from 0 to 8,000 with comma-formatted tick labels,
labeled "Daily Visitors (count)". The title reads "area-basic · plotnine · pyplots.ai"
in the correct format. The background uses a minimal theme with subtle light-gray
major gridlines and no minor gridlines. The data exhibits a clear cyclical weekly
pattern with an upward trend and increasing amplitude over the month.
criteria_checklist:
visual_quality:
score: 40
max: 40
items:
- id: VQ-01
name: Text Legibility
score: 10
max: 10
passed: true
comment: Title ~24pt, axis labels ~20pt, tick labels ~16pt — all perfectly
readable at full resolution
- id: VQ-02
name: No Overlap
score: 8
max: 8
passed: true
comment: No overlapping text anywhere; date labels well-spaced, Peak annotation
clear
- id: VQ-03
name: Element Visibility
score: 8
max: 8
passed: true
comment: Area fill clearly visible with appropriate alpha, line weight 1.5
well-suited for 30 data points, LOWESS trend line distinct
- id: VQ-04
name: Color Accessibility
score: 5
max: 5
passed: true
comment: 'Uses pyplots primary colors (#306998 blue, #FFD43B yellow) — colorblind-safe,
high contrast'
- id: VQ-05
name: Layout Balance
score: 5
max: 5
passed: true
comment: Plot fills canvas well in 16:9 ratio, balanced margins, no wasted
space
- id: VQ-06
name: Axis Labels
score: 2
max: 2
passed: true
comment: 'X: Date (January 2024) with context, Y: Daily Visitors (count) with
units'
- id: VQ-07
name: Grid & Legend
score: 2
max: 2
passed: true
comment: 'Subtle major gridlines (alpha=0.3, #cccccc), minor grid removed,
no legend needed for single series'
spec_compliance:
score: 24
max: 25
items:
- id: SC-01
name: Plot Type
score: 8
max: 8
passed: true
comment: Correct area chart with filled region below line
- id: SC-02
name: Data Mapping
score: 5
max: 5
passed: true
comment: X=datetime dates, Y=numeric visitor counts — correctly assigned
- id: SC-03
name: Required Features
score: 5
max: 5
passed: true
comment: Semi-transparent fill (alpha 0.35), gridlines present, clear axis
labels with units
- id: SC-04
name: Data Range
score: 3
max: 3
passed: true
comment: Y-axis 0–8,000+ shows all data; X-axis covers full 30-day range
- id: SC-05
name: Legend Accuracy
score: 1
max: 2
passed: false
comment: Yellow LOWESS trend line has no legend entry; viewer may not understand
what it represents
- id: SC-06
name: Title Format
score: 2
max: 2
passed: true
comment: area-basic · plotnine · pyplots.ai matches required format with middle
dots
data_quality:
score: 19
max: 20
items:
- id: DQ-01
name: Feature Coverage
score: 7
max: 8
passed: true
comment: Shows upward trend, weekly cyclical pattern, increasing variance,
clear peaks/troughs — comprehensive but could show wider range
- id: DQ-02
name: Realistic Context
score: 7
max: 7
passed: true
comment: Daily website visitors over a month is a real, neutral business scenario
matching the spec example
- id: DQ-03
name: Appropriate Scale
score: 5
max: 5
passed: true
comment: 3,500–8,200 daily visitors is realistic for a mid-sized website
code_quality:
score: 10
max: 10
items:
- id: CQ-01
name: KISS Structure
score: 3
max: 3
passed: true
comment: 'Clean linear flow: imports → data generation → plot → save, no functions/classes'
- id: CQ-02
name: Reproducibility
score: 3
max: 3
passed: true
comment: np.random.seed(42) set before all random operations
- id: CQ-03
name: Clean Imports
score: 2
max: 2
passed: true
comment: All imports used (geom_smooth for LOWESS, annotate for Peak label,
etc.)
- id: CQ-04
name: No Deprecated API
score: 1
max: 1
passed: true
comment: All API calls are current
- id: CQ-05
name: Output Correct
score: 1
max: 1
passed: true
comment: Saves as plot.png
library_features:
score: 4
max: 5
items:
- id: LF-01
name: Distinctive Features
score: 4
max: 5
passed: true
comment: 'Effective grammar of graphics: layer composition (geom_area + geom_line
+ geom_smooth), geom_smooth(method=lowess), scale_x_datetime, scale_y_continuous
with custom lambda labels, annotate for text'
verdict: APPROVED