Skip to content

Commit 3d4eba9

Browse files
chore(bokeh): update quality score 75 and review feedback for stereonet-equal-area
1 parent 9ea6c81 commit 3d4eba9

2 files changed

Lines changed: 218 additions & 10 deletions

File tree

plots/stereonet-equal-area/implementations/bokeh.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
stereonet-equal-area: Structural Geology Stereonet (Equal-Area Projection)
3-
Library: bokeh | Python 3.13
4-
Quality: pending | Created: 2026-03-15
3+
Library: bokeh 3.9.0 | Python 3.14.3
4+
Quality: 75/100 | Created: 2026-03-15
55
"""
66

77
import matplotlib
Lines changed: 215 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
# Per-library metadata for bokeh implementation of stereonet-equal-area
2-
# Auto-generated by impl-generate.yml
3-
41
library: bokeh
52
specification_id: stereonet-equal-area
63
created: '2026-03-15T22:59:30Z'
7-
updated: '2026-03-15T22:59:30Z'
4+
updated: '2026-03-15T23:03:33Z'
85
generated_by: claude-opus-4-5-20251101
96
workflow_run: 23121188869
107
issue: 4576
@@ -13,7 +10,218 @@ library_version: 3.9.0
1310
preview_url: https://storage.googleapis.com/pyplots-images/plots/stereonet-equal-area/bokeh/plot.png
1411
preview_thumb: https://storage.googleapis.com/pyplots-images/plots/stereonet-equal-area/bokeh/plot_thumb.png
1512
preview_html: https://storage.googleapis.com/pyplots-images/plots/stereonet-equal-area/bokeh/plot.html
16-
quality_score: null
13+
quality_score: 75
1714
review:
18-
strengths: []
19-
weaknesses: []
15+
strengths:
16+
- Correct equal-area projection math with proper pole and great circle computations
17+
- Good colorblind-safe palette (blue/orange/purple) with appropriate alpha blending
18+
on great circles
19+
- Realistic geological data with three well-differentiated structural feature types
20+
- Clean stereonet presentation with hidden axes, styled tick marks, and cardinal
21+
direction labels
22+
weaknesses:
23+
- Missing stereonet grid lines (equal-area net) required by spec
24+
- Legend too small and isolated in far upper-right corner
25+
- Title and text sizes appear small relative to 3600px canvas
26+
- Density contours too faint to communicate clustering
27+
- No degree labels around perimeter
28+
- Relies on matplotlib for contour extraction instead of Bokeh-native approach
29+
- Does not leverage distinctive Bokeh features (HoverTool, interactive legend)
30+
image_description: 'The plot shows a Schmidt equal-area (lower-hemisphere) stereonet
31+
rendered as a circle with N at top, S at bottom, E at right, W at left. Three
32+
geological feature types are displayed: Bedding (blue #306998 poles clustered
33+
in the NW quadrant with great circles sweeping across the net), Joints (orange
34+
#E8833A poles near the S edge with great circles extending E-W), and Faults (purple
35+
#8B5CF6 poles clustered in the SW quadrant with great circles arcing NW-SE). Tick
36+
marks appear every 10 degrees around the perimeter with thicker marks at cardinal
37+
directions. Dotted gray density contour lines are faintly visible around the Faults
38+
pole cluster. The title "stereonet-equal-area · bokeh · pyplots.ai" is at the
39+
top. A small legend with colored dots and labels sits in the upper-right corner.
40+
The background is white with no axes or grid visible. The stereonet circle fills
41+
roughly 60% of the 3600x3600 canvas.'
42+
criteria_checklist:
43+
visual_quality:
44+
score: 23
45+
max: 30
46+
items:
47+
- id: VQ-01
48+
name: Text Legibility
49+
score: 5
50+
max: 8
51+
passed: true
52+
comment: Font sizes explicitly set but appear small at 3600px canvas; legend
53+
barely readable
54+
- id: VQ-02
55+
name: No Overlap
56+
score: 6
57+
max: 6
58+
passed: true
59+
comment: No overlapping text or data elements
60+
- id: VQ-03
61+
name: Element Visibility
62+
score: 5
63+
max: 6
64+
passed: true
65+
comment: Poles and great circles visible; density contours very faint
66+
- id: VQ-04
67+
name: Color Accessibility
68+
score: 4
69+
max: 4
70+
passed: true
71+
comment: Blue/orange/purple palette is colorblind-safe
72+
- id: VQ-05
73+
name: Layout & Canvas
74+
score: 2
75+
max: 4
76+
passed: false
77+
comment: Legend isolated in upper-right; some wasted whitespace
78+
- id: VQ-06
79+
name: Axis Labels & Title
80+
score: 1
81+
max: 2
82+
passed: false
83+
comment: Cardinal directions present but no degree markings around perimeter
84+
design_excellence:
85+
score: 11
86+
max: 20
87+
items:
88+
- id: DE-01
89+
name: Aesthetic Sophistication
90+
score: 4
91+
max: 8
92+
passed: false
93+
comment: Custom palette and alpha blending; well-configured but not exceptional
94+
- id: DE-02
95+
name: Visual Refinement
96+
score: 4
97+
max: 6
98+
passed: true
99+
comment: Axes/grid hidden, outline removed, styled tick marks — good refinement
100+
- id: DE-03
101+
name: Data Storytelling
102+
score: 3
103+
max: 6
104+
passed: false
105+
comment: Clustering patterns visible but contours too faint to tell density
106+
story
107+
spec_compliance:
108+
score: 14
109+
max: 15
110+
items:
111+
- id: SC-01
112+
name: Plot Type
113+
score: 5
114+
max: 5
115+
passed: true
116+
comment: Correct equal-area lower-hemisphere projection
117+
- id: SC-02
118+
name: Required Features
119+
score: 3
120+
max: 4
121+
passed: false
122+
comment: Missing stereonet grid lines (equal-area net) specified in spec
123+
- id: SC-03
124+
name: Data Mapping
125+
score: 3
126+
max: 3
127+
passed: true
128+
comment: Strike/dip correctly converted to equal-area projection
129+
- id: SC-04
130+
name: Title & Legend
131+
score: 3
132+
max: 3
133+
passed: true
134+
comment: Title format correct; legend labels match feature types
135+
data_quality:
136+
score: 14
137+
max: 15
138+
items:
139+
- id: DQ-01
140+
name: Feature Coverage
141+
score: 5
142+
max: 6
143+
passed: true
144+
comment: Three distinct feature types with different orientations and dip
145+
angles
146+
- id: DQ-02
147+
name: Realistic Context
148+
score: 5
149+
max: 5
150+
passed: true
151+
comment: Realistic structural geology field measurements
152+
- id: DQ-03
153+
name: Appropriate Scale
154+
score: 4
155+
max: 4
156+
passed: true
157+
comment: Strike 0-360°, dip 5-89° — proper geological ranges
158+
code_quality:
159+
score: 9
160+
max: 10
161+
items:
162+
- id: CQ-01
163+
name: KISS Structure
164+
score: 3
165+
max: 3
166+
passed: true
167+
comment: Linear flow, no functions or classes
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: 1
183+
max: 2
184+
passed: false
185+
comment: Matplotlib import for contour extraction adds complexity
186+
- id: CQ-05
187+
name: Output & API
188+
score: 1
189+
max: 1
190+
passed: true
191+
comment: Saves plot.png and plot.html
192+
library_mastery:
193+
score: 4
194+
max: 10
195+
items:
196+
- id: LM-01
197+
name: Idiomatic Usage
198+
score: 3
199+
max: 5
200+
passed: false
201+
comment: Correct Bokeh patterns but relies on matplotlib for contour extraction
202+
- id: LM-02
203+
name: Distinctive Features
204+
score: 1
205+
max: 5
206+
passed: false
207+
comment: Generic usage; Bokeh used as basic renderer without HoverTool or
208+
interactive features
209+
verdict: REJECTED
210+
impl_tags:
211+
dependencies:
212+
- scipy
213+
techniques:
214+
- annotations
215+
- custom-legend
216+
- polar-projection
217+
- html-export
218+
patterns:
219+
- data-generation
220+
- iteration-over-groups
221+
- columndatasource
222+
dataprep:
223+
- kde
224+
styling:
225+
- minimal-chrome
226+
- alpha-blending
227+
- edge-highlighting

0 commit comments

Comments
 (0)