Skip to content

Commit c6bd926

Browse files
chore(bokeh): update quality score 85 and review feedback for column-stratigraphic
1 parent b4f3cd4 commit c6bd926

2 files changed

Lines changed: 74 additions & 67 deletions

File tree

plots/column-stratigraphic/implementations/bokeh.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: bokeh 3.9.0 | Python 3.14.3
4+
Quality: 85/100 | Created: 2026-03-15
45
"""
56

67
from bokeh.io import export_png

plots/column-stratigraphic/metadata/bokeh.yaml

Lines changed: 72 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
library: bokeh
22
specification_id: column-stratigraphic
33
created: '2026-03-15T22:55:12Z'
4-
updated: '2026-03-15T22:58:41Z'
4+
updated: '2026-03-15T23:07:08Z'
55
generated_by: claude-opus-4-5-20251101
66
workflow_run: 23121198781
77
issue: 4573
@@ -10,33 +10,36 @@ library_version: 3.9.0
1010
preview_url: https://storage.googleapis.com/pyplots-images/plots/column-stratigraphic/bokeh/plot.png
1111
preview_thumb: https://storage.googleapis.com/pyplots-images/plots/column-stratigraphic/bokeh/plot_thumb.png
1212
preview_html: https://storage.googleapis.com/pyplots-images/plots/column-stratigraphic/bokeh/plot.html
13-
quality_score: 83
13+
quality_score: 85
1414
review:
1515
strengths:
16-
- Full spec compliance with all required features (lithology patterns, formation
17-
labels, age brackets, depth scale)
18-
- Thoughtful earth-tone color palette matching the geological domain
19-
- Interactive hover tooltips providing rich layer information
20-
- Clean well-structured code with elegant age-grouping logic
21-
- Good visual refinement (hidden x-axis, subtle grid, removed outline)
16+
- K-Pg boundary annotation with red dashed line adds geological storytelling and
17+
visual interest
18+
- Earth-tone color palette with matching hatch patterns is contextually appropriate
19+
for geological data
20+
- 'Good use of Bokeh-specific features: HoverTool with rich tooltips, hatch patterns,
21+
dual HTML+PNG export'
22+
- Age brackets on the left side provide clear temporal organization
23+
- Perfect spec compliance with all required features implemented
2224
weaknesses:
23-
- Poor horizontal canvas utilization with legend isolated in far corner
24-
- No visual emphasis on key geological transitions like the K-Pg boundary
25-
- Sandstone and Siltstone colors are somewhat similar for colorblind viewers
26-
- Layer thicknesses are fairly uniform reducing visual variety
27-
image_description: 'The plot displays a vertical stratigraphic column spanning 0–200m
28-
depth (increasing downward). Ten geological layers are stacked as rectangular
29-
blocks, each filled with a distinct color and hatch pattern: Sandstone (wheat/tan
30-
with dots), Shale (gray with horizontal dashes), Limestone (sky blue with crosses),
31-
Siltstone (brown-gray with diagonal lines), and Conglomerate (dark orange with
32-
circles). Formation names (Dakota Fm, Mancos Fm, Niobrara Fm, Pierre Fm, Fox Hills
33-
Fm, Dawson Fm, Green River Fm, Leadville Fm, Wasatch Fm, Uinta Fm) are labeled
34-
to the right of each layer. Age labels (Late Cretaceous, Paleocene, Eocene) appear
35-
on the left with bracket lines spanning their respective intervals. The y-axis
36-
shows "Depth (m)" with tick marks at 0, 50, 100, 150, 200. The title reads "column-stratigraphic
37-
· bokeh · pyplots.ai" in the top left. A "Lithology" legend is in the bottom-right
38-
corner showing all five rock types. The x-axis is hidden. Subtle dashed horizontal
39-
grid lines are visible.'
25+
- 'Canvas utilization is poor: significant empty space between formation labels
26+
and legend; column occupies only ~35% of width'
27+
- Legend is isolated in the far top-right, disconnected from the data
28+
- 'Color accessibility could improve: sandstone/siltstone distinction is subtle
29+
for colorblind users'
30+
image_description: 'The plot displays a vertical stratigraphic column showing 10
31+
geological layers from 0m to 200m depth (increasing downward). Each layer is rendered
32+
as a rectangular block with a distinct fill color and hatch pattern: sandstone
33+
in wheat with dot pattern, shale in gray with horizontal dashes, limestone in
34+
light blue with cross-hatch, siltstone in dark brown with diagonal lines, and
35+
conglomerate in orange with circle pattern. Formation names (Dakota Fm, Mancos
36+
Fm, Niobrara Fm, Pierre Fm, Fox Hills Fm, Dawson Fm, Green River Fm, Leadville
37+
Fm, Wasatch Fm, Uinta Fm) are labeled to the right of the column. Age labels (Late
38+
Cretaceous, Paleocene, Eocene) appear on the left with bracket lines grouping
39+
the relevant layers. A red dashed horizontal line marks the K-Pg Boundary (~66
40+
Ma) at 88m depth. The y-axis shows "Depth (m)" and a lithology legend titled "Lithology"
41+
is in the top-right corner. Title reads "column-stratigraphic · bokeh · pyplots.ai".
42+
Background is off-white (#FAFAFA).'
4043
criteria_checklist:
4144
visual_quality:
4245
score: 26
@@ -47,64 +50,66 @@ review:
4750
score: 7
4851
max: 8
4952
passed: true
50-
comment: All font sizes explicitly set (title 36pt, axis 28pt, ticks 22pt,
51-
labels 18pt, legend 20pt). Legend in far corner appears small.
53+
comment: All font sizes explicitly set (36pt title, 28pt axis label, 22pt
54+
ticks, 18pt labels, 20pt legend). K-Pg boundary label at 16pt slightly small.
5255
- id: VQ-02
5356
name: No Overlap
5457
score: 6
5558
max: 6
5659
passed: true
57-
comment: No overlapping text. All labels well-separated.
60+
comment: No overlapping text elements; all labels clearly separated.
5861
- id: VQ-03
5962
name: Element Visibility
6063
score: 6
6164
max: 6
6265
passed: true
63-
comment: All layers clearly visible with distinct colors and hatch patterns.
66+
comment: All layer rectangles clearly visible with distinct colors and hatch
67+
patterns.
6468
- id: VQ-04
6569
name: Color Accessibility
6670
score: 3
6771
max: 4
6872
passed: true
69-
comment: Earth-tone palette differentiates well but Sandstone/Siltstone similarity
70-
may challenge colorblind viewers.
73+
comment: Five distinct colors generally distinguishable but sandstone/siltstone
74+
may be hard for colorblind users.
7175
- id: VQ-05
7276
name: Layout & Canvas
7377
score: 2
7478
max: 4
75-
passed: false
76-
comment: Significant wasted horizontal space. Legend isolated in far bottom-right
77-
corner.
79+
passed: true
80+
comment: Column occupies ~35% of canvas width; significant empty space; legend
81+
isolated in far top-right.
7882
- id: VQ-06
7983
name: Axis Labels & Title
8084
score: 2
8185
max: 2
8286
passed: true
83-
comment: Y-axis 'Depth (m)' with units. X-axis appropriately hidden.
87+
comment: Y-axis labeled Depth (m) with units; x-axis correctly hidden.
8488
design_excellence:
85-
score: 12
89+
score: 13
8690
max: 20
8791
items:
8892
- id: DE-01
8993
name: Aesthetic Sophistication
9094
score: 5
9195
max: 8
9296
passed: true
93-
comment: Thoughtful earth-tone palette, hatch patterns, age brackets. Above
94-
defaults but not publication-level.
97+
comment: Thoughtful earth-tone palette matching geological context. Custom
98+
hatch patterns. Above defaults but not publication-quality.
9599
- id: DE-02
96100
name: Visual Refinement
97101
score: 4
98102
max: 6
99103
passed: true
100-
comment: X-axis hidden, outline removed, subtle dashed grid, minor ticks removed.
104+
comment: 'X-grid removed, y-grid subtle (alpha=0.15, dashed), outline removed,
105+
background #FAFAFA.'
101106
- id: DE-03
102107
name: Data Storytelling
103-
score: 3
108+
score: 4
104109
max: 6
105-
passed: false
106-
comment: Age brackets create narrative but no emphasis on key transitions
107-
like K-Pg boundary.
110+
passed: true
111+
comment: K-Pg boundary creates geological narrative. Age brackets organize
112+
temporal progression.
108113
spec_compliance:
109114
score: 15
110115
max: 15
@@ -114,26 +119,27 @@ review:
114119
score: 5
115120
max: 5
116121
passed: true
117-
comment: Correct vertical stratigraphic column with stacked rectangular blocks.
122+
comment: Correct vertical stratigraphic column with stacked rectangular layers.
118123
- id: SC-02
119124
name: Required Features
120125
score: 4
121126
max: 4
122127
passed: true
123-
comment: 'All required features present: 5 lithology patterns, formation labels,
124-
age labels, depth scale.'
128+
comment: 'All spec features present: lithology patterns, formation names,
129+
age labels, depth scale, layer boundaries.'
125130
- id: SC-03
126131
name: Data Mapping
127132
score: 3
128133
max: 3
129134
passed: true
130-
comment: Depth correctly mapped 0-200m increasing downward.
135+
comment: Y-axis represents depth correctly, layers at correct intervals.
131136
- id: SC-04
132137
name: Title & Legend
133138
score: 3
134139
max: 3
135140
passed: true
136-
comment: Correct title format. Legend shows all 5 lithology types.
141+
comment: Title follows exact format. Legend titled Lithology with correct
142+
labels.
137143
data_quality:
138144
score: 13
139145
max: 15
@@ -143,22 +149,22 @@ review:
143149
score: 5
144150
max: 6
145151
passed: true
146-
comment: 5 lithology types, 10 layers, 3 geological periods. Thicknesses fairly
147-
uniform.
152+
comment: Shows 5 lithology types, varying thicknesses, three geological periods,
153+
K-Pg boundary event.
148154
- id: DQ-02
149155
name: Realistic Context
150156
score: 4
151157
max: 5
152158
passed: true
153-
comment: Real formation names from Western Interior context. Some stratigraphic
154-
ordering liberties.
159+
comment: Real formation names from Western Interior. Some stratigraphic ordering
160+
geologically questionable.
155161
- id: DQ-03
156162
name: Appropriate Scale
157163
score: 4
158164
max: 4
159165
passed: true
160-
comment: 0-200m depth range and 15-25m thicknesses realistic for borehole
161-
section.
166+
comment: Depths 0-200m realistic for borehole/outcrop. Layer thicknesses geologically
167+
plausible.
162168
code_quality:
163169
score: 10
164170
max: 10
@@ -168,13 +174,13 @@ review:
168174
score: 3
169175
max: 3
170176
passed: true
171-
comment: Linear flow, no functions or classes.
177+
comment: 'Clean linear flow: imports, data, plot, styling, save.'
172178
- id: CQ-02
173179
name: Reproducibility
174180
score: 2
175181
max: 2
176182
passed: true
177-
comment: All data hardcoded and deterministic.
183+
comment: Fully deterministic with hardcoded data.
178184
- id: CQ-03
179185
name: Clean Imports
180186
score: 2
@@ -186,42 +192,42 @@ review:
186192
score: 2
187193
max: 2
188194
passed: true
189-
comment: Clean, well-structured with elegant age-grouping logic.
195+
comment: Appropriate use of loops and dictionary-based style mapping.
190196
- id: CQ-05
191197
name: Output & API
192198
score: 1
193199
max: 1
194200
passed: true
195-
comment: Saves plot.png via export_png. Current API.
201+
comment: Saves as plot.png via export_png and plot.html. Current Bokeh API.
196202
library_mastery:
197-
score: 7
203+
score: 8
198204
max: 10
199205
items:
200206
- id: LM-01
201207
name: Idiomatic Usage
202208
score: 4
203209
max: 5
204210
passed: true
205-
comment: Good use of ColumnDataSource, rect glyphs, Label, Legend/LegendItem,
206-
HoverTool.
211+
comment: Good use of ColumnDataSource, figure().rect(), Label/Legend/Span
212+
models.
207213
- id: LM-02
208214
name: Distinctive Features
209-
score: 3
215+
score: 4
210216
max: 5
211217
passed: true
212-
comment: 'Bokeh-specific: HoverTool with formatted tooltips, hatch patterns,
213-
dual HTML+PNG export.'
218+
comment: HoverTool with rich tooltips, hatch_pattern, dual HTML+PNG export
219+
are distinctive Bokeh features.
214220
verdict: REJECTED
215221
impl_tags:
216222
dependencies: []
217223
techniques:
218-
- hover-tooltips
219224
- annotations
225+
- hover-tooltips
220226
- custom-legend
221227
- html-export
222228
patterns:
223-
- columndatasource
224229
- iteration-over-groups
230+
- columndatasource
225231
dataprep: []
226232
styling:
227233
- grid-styling

0 commit comments

Comments
 (0)