Skip to content

Commit 331cb77

Browse files
chore(plotnine): update quality score 86 and review feedback for column-stratigraphic
1 parent 3e329c6 commit 331cb77

2 files changed

Lines changed: 75 additions & 63 deletions

File tree

plots/column-stratigraphic/implementations/plotnine.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
"""pyplots.ai
1+
""" pyplots.ai
22
column-stratigraphic: Stratigraphic Column with Lithology Patterns
33
Library: plotnine 0.15.3 | Python 3.14.3
4+
Quality: 86/100 | Created: 2026-03-15
45
"""
56

67
import numpy as np

plots/column-stratigraphic/metadata/plotnine.yaml

Lines changed: 73 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
library: plotnine
22
specification_id: column-stratigraphic
33
created: '2026-03-15T22:55:35Z'
4-
updated: '2026-03-15T22:59:31Z'
4+
updated: '2026-03-15T23:10:04Z'
55
generated_by: claude-opus-4-5-20251101
66
workflow_run: 23121198926
77
issue: 4573
@@ -10,97 +10,104 @@ library_version: 0.15.3
1010
preview_url: https://storage.googleapis.com/pyplots-images/plots/column-stratigraphic/plotnine/plot.png
1111
preview_thumb: https://storage.googleapis.com/pyplots-images/plots/column-stratigraphic/plotnine/plot_thumb.png
1212
preview_html: null
13-
quality_score: 81
13+
quality_score: 86
1414
review:
1515
strengths:
16-
- Excellent spec compliance with all required features and correct layout conventions
17-
- Realistic geological data using actual Western US formation names
18-
- Good variety of lithology patterns approximating standard geological symbols
19-
- Well-structured plotnine layer composition with clean theme customization
16+
- Excellent spec compliance with all required features (6 lithology patterns, formation
17+
names, age labels, unconformity)
18+
- Realistic geological data with real Western US formation names and plausible stratigraphy
19+
- Strong data storytelling through the red unconformity highlight at J/K boundary
20+
- Clean well-organized code with good reproducibility
21+
- Custom color palette with thoughtful geological color choices
2022
weaknesses:
21-
- Formation and age label font sizes too small (10-11pt)
22-
- Siltstone pattern too sparse and hard to distinguish
23-
- Color contrast between siltstone and shale insufficient
24-
- No visual emphasis or focal point for data storytelling
25-
- Title at 22pt slightly under 24pt guideline
26-
image_description: 'The plot displays a vertical stratigraphic column spanning 0-180m
27-
depth with 10 geological layers. Each layer is filled with a distinct muted color
28-
and overlaid with lithology-specific patterns: sandstone (yellow with stipple
29-
dots), shale (gray with horizontal dashes), limestone (blue with brick pattern),
30-
siltstone (light blue-gray with short random dashes), conglomerate (salmon with
31-
open circles), and mudstone (brown with dense horizontal dashes). Age labels (Late
32-
Cretaceous through Triassic) appear on the left side, and formation names (Frontier
33-
Fm, Madison Fm, Kootenai Fm, Morrison Fm, Sundance Fm) in italics on the right.
34-
The y-axis shows "Depth (m)" increasing downward with ticks every 20m. A horizontal
35-
legend at the bottom identifies all 6 lithology types. The title reads "column-stratigraphic
36-
· plotnine · pyplots.ai" in bold at the top. Background is white with subtle horizontal
37-
grid lines.'
23+
- Formation labels (14pt) and age labels (13pt) slightly undersized for full resolution
24+
- Shale and Mudstone colors too similar in lightness for colorblind accessibility
25+
- Horizontal canvas space underutilized with wide x-limits
26+
- Library mastery could be improved with more distinctive plotnine features
27+
image_description: 'The plot displays a vertical stratigraphic column showing 10
28+
geological layers from 0 to 180 meters depth (increasing downward). Each layer
29+
is filled with a distinct color and overlaid with lithology-specific patterns:
30+
yellow with stipple dots for Sandstone, gray with horizontal dashes for Shale,
31+
blue with brick pattern for Limestone, light green with short random dashes for
32+
Siltstone, salmon/orange with open circles for Conglomerate, and brown with fine
33+
horizontal dashes for Mudstone. Formation names (Frontier Fm, Madison Fm, Kootenai
34+
Fm, Morrison Fm, Sundance Fm) appear in italics on the right side. Geological
35+
age labels (Late Cretaceous, Early Cretaceous, Late Jurassic, Middle Jurassic,
36+
Triassic) appear in bold on the left side with bracket lines. A red wavy line
37+
at 95m marks an unconformity between Kootenai Fm and Morrison Fm, labeled "~ Unconformity
38+
~" in red italic bold. The title reads "column-stratigraphic · plotnine · pyplots.ai"
39+
at top. A horizontal legend at the bottom shows all 6 lithology types. The background
40+
is light gray with subtle horizontal grid lines.'
3841
criteria_checklist:
3942
visual_quality:
40-
score: 25
43+
score: 26
4144
max: 30
4245
items:
4346
- id: VQ-01
4447
name: Text Legibility
45-
score: 6
48+
score: 7
4649
max: 8
4750
passed: true
48-
comment: Font sizes explicitly set but title slightly under 24pt; formation/age
49-
labels (10-11pt) are small
51+
comment: All font sizes explicitly set. Formation labels (14pt) and age labels
52+
(13pt) slightly small for canvas size.
5053
- id: VQ-02
5154
name: No Overlap
5255
score: 6
5356
max: 6
5457
passed: true
55-
comment: All text well-spaced with no collisions
58+
comment: No overlapping text elements. Labels well-separated.
5659
- id: VQ-03
5760
name: Element Visibility
5861
score: 5
5962
max: 6
6063
passed: true
61-
comment: Most patterns visible; siltstone pattern sparse and hard to distinguish
64+
comment: Most patterns clearly visible. Siltstone short dashes are subtler
65+
than other patterns.
6266
- id: VQ-04
6367
name: Color Accessibility
6468
score: 3
6569
max: 4
6670
passed: true
67-
comment: Generally distinguishable but siltstone and shale too similar in
68-
lightness
71+
comment: Shale and Mudstone colors too similar in lightness for colorblind
72+
viewers.
6973
- id: VQ-05
7074
name: Layout & Canvas
7175
score: 3
7276
max: 4
7377
passed: true
74-
comment: Good vertical utilization; some horizontal space underutilized
78+
comment: Good vertical usage but significant horizontal empty space around
79+
the column.
7580
- id: VQ-06
7681
name: Axis Labels & Title
7782
score: 2
7883
max: 2
7984
passed: true
80-
comment: Y-axis shows Depth (m) with units; x-axis appropriately blank
85+
comment: Y-axis labeled Depth (m) with units. X-axis intentionally blank.
8186
design_excellence:
82-
score: 12
87+
score: 14
8388
max: 20
8489
items:
8590
- id: DE-01
8691
name: Aesthetic Sophistication
87-
score: 5
92+
score: 6
8893
max: 8
8994
passed: true
90-
comment: Custom geological palette with muted tones, pattern overlays, italic
91-
labels — above defaults but not publication-level
95+
comment: Custom geological color palette, thoughtful typography hierarchy,
96+
red unconformity highlight. Above defaults.
9297
- id: DE-02
9398
name: Visual Refinement
9499
score: 4
95100
max: 6
96101
passed: true
97-
comment: theme_minimal, removed x-axis, subtle grid — good refinement
102+
comment: theme_minimal with customized subtle y-grid, x-axis removed, light
103+
panel background, age brackets.
98104
- id: DE-03
99105
name: Data Storytelling
100-
score: 3
106+
score: 4
101107
max: 6
102108
passed: true
103-
comment: Natural geological narrative but no focal point or emphasis
109+
comment: Red unconformity at J/K boundary creates focal point. Age progression
110+
guides viewer through time.
104111
spec_compliance:
105112
score: 15
106113
max: 15
@@ -110,83 +117,84 @@ review:
110117
score: 5
111118
max: 5
112119
passed: true
113-
comment: Correct vertical stratigraphic column with stacked layers
120+
comment: Correct vertical stratigraphic column with stacked layers and lithology
121+
patterns.
114122
- id: SC-02
115123
name: Required Features
116124
score: 4
117125
max: 4
118126
passed: true
119-
comment: 'All required features present: 6 lithology patterns, formation/age
120-
labels, depth scale, boundaries'
127+
comment: 'All required features present: 6 lithology patterns, depth downward,
128+
formation names, age labels, depth scale, boundaries, unconformity.'
121129
- id: SC-03
122130
name: Data Mapping
123131
score: 3
124132
max: 3
125133
passed: true
126-
comment: Depth correctly mapped increasing downward
134+
comment: Depth axis correctly reversed, layers correctly positioned.
127135
- id: SC-04
128136
name: Title & Legend
129137
score: 3
130138
max: 3
131139
passed: true
132-
comment: Title format correct, legend labels match data
140+
comment: Title format correct, legend shows all 6 lithology types.
133141
data_quality:
134-
score: 14
142+
score: 15
135143
max: 15
136144
items:
137145
- id: DQ-01
138146
name: Feature Coverage
139-
score: 5
147+
score: 6
140148
max: 6
141149
passed: true
142-
comment: 6 lithology types, varying thicknesses, 5 formations and ages; could
143-
include unconformity
150+
comment: 10 layers, 6 lithologies, varying thicknesses, 5 formations, 5 ages,
151+
unconformity.
144152
- id: DQ-02
145153
name: Realistic Context
146154
score: 5
147155
max: 5
148156
passed: true
149-
comment: Real Western US formation names with plausible age assignments
157+
comment: Western US sedimentary section with real formation names.
150158
- id: DQ-03
151159
name: Appropriate Scale
152160
score: 4
153161
max: 4
154162
passed: true
155-
comment: 0-180m depth with 12-25m thicknesses is realistic
163+
comment: 0-180m depth range and 12-23m layer thicknesses are realistic.
156164
code_quality:
157-
score: 9
165+
score: 10
158166
max: 10
159167
items:
160168
- id: CQ-01
161169
name: KISS Structure
162170
score: 3
163171
max: 3
164172
passed: true
165-
comment: Linear flow, no functions/classes
173+
comment: Linear flow with no functions or classes.
166174
- id: CQ-02
167175
name: Reproducibility
168176
score: 2
169177
max: 2
170178
passed: true
171-
comment: np.random.seed(42) set
179+
comment: np.random.seed(42) set before random pattern generation.
172180
- id: CQ-03
173181
name: Clean Imports
174182
score: 2
175183
max: 2
176184
passed: true
177-
comment: All imports used
185+
comment: All imports used.
178186
- id: CQ-04
179187
name: Code Elegance
180-
score: 1
188+
score: 2
181189
max: 2
182190
passed: true
183-
comment: Pattern generation loop somewhat verbose but necessary
191+
comment: Pattern generation well-organized by lithology type. No fake UI.
184192
- id: CQ-05
185193
name: Output & API
186194
score: 1
187195
max: 1
188196
passed: true
189-
comment: Saves as plot.png with dpi=300
197+
comment: Saves as plot.png with dpi=300.
190198
library_mastery:
191199
score: 6
192200
max: 10
@@ -196,23 +204,26 @@ review:
196204
score: 4
197205
max: 5
198206
passed: true
199-
comment: Good grammar-of-graphics usage with layered geoms, scales, and themes
207+
comment: Good use of plotnine grammar with multiple geom layers, scale functions,
208+
and theme customization.
200209
- id: LM-02
201210
name: Distinctive Features
202211
score: 2
203212
max: 5
204-
passed: true
205-
comment: Layer composition is nice but complexity is in manual data prep,
206-
not plotnine features
213+
passed: false
214+
comment: Uses some plotnine features but core visualization relies on manual
215+
coordinate computation.
207216
verdict: REJECTED
208217
impl_tags:
209218
dependencies: []
210219
techniques:
211220
- annotations
212221
- layer-composition
222+
- custom-legend
213223
patterns:
214224
- data-generation
215225
- iteration-over-groups
226+
- groupby-aggregation
216227
dataprep: []
217228
styling:
218229
- alpha-blending

0 commit comments

Comments
 (0)