1- # Per-library metadata for bokeh implementation of stereonet-equal-area
2- # Auto-generated by impl-generate.yml
3-
41library : bokeh
52specification_id : stereonet-equal-area
63created : ' 2026-03-15T22:59:30Z'
7- updated : ' 2026-03-15T22:59:30Z '
4+ updated : ' 2026-03-15T23:03:33Z '
85generated_by : claude-opus-4-5-20251101
96workflow_run : 23121188869
107issue : 4576
@@ -13,7 +10,218 @@ library_version: 3.9.0
1310preview_url : https://storage.googleapis.com/pyplots-images/plots/stereonet-equal-area/bokeh/plot.png
1411preview_thumb : https://storage.googleapis.com/pyplots-images/plots/stereonet-equal-area/bokeh/plot_thumb.png
1512preview_html : https://storage.googleapis.com/pyplots-images/plots/stereonet-equal-area/bokeh/plot.html
16- quality_score : null
13+ quality_score : 75
1714review :
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