1- # Per-library metadata for plotly implementation of stereonet-equal-area
2- # Auto-generated by impl-generate.yml
3-
41library : plotly
52specification_id : stereonet-equal-area
63created : ' 2026-03-15T22:59:29Z'
7- updated : ' 2026-03-15T22:59:29Z '
4+ updated : ' 2026-03-15T23:03:26Z '
85generated_by : claude-opus-4-5-20251101
96workflow_run : 23121188861
107issue : 4576
@@ -13,7 +10,232 @@ library_version: 6.6.0
1310preview_url : https://storage.googleapis.com/pyplots-images/plots/stereonet-equal-area/plotly/plot.png
1411preview_thumb : https://storage.googleapis.com/pyplots-images/plots/stereonet-equal-area/plotly/plot_thumb.png
1512preview_html : https://storage.googleapis.com/pyplots-images/plots/stereonet-equal-area/plotly/plot.html
16- quality_score : null
13+ quality_score : 83
1714review :
18- strengths : []
19- weaknesses : []
15+ strengths :
16+ - Mathematically correct equal-area (Schmidt) projection with proper pole and great
17+ circle computation
18+ - ' All specification features fully implemented: great circles, poles, density contours,
19+ tick marks, cardinal labels, legend'
20+ - Excellent data quality with realistic geological context and appropriate structural
21+ feature variety
22+ - Clean, well-structured code with good comments explaining the projection geometry
23+ - Thoughtful density contour styling with warm color gradient and appropriate transparency
24+ weaknesses :
25+ - Hover information disabled on all traces — Plotly key strength of interactivity
26+ is completely unused for pole data
27+ - Red-green color combination (Fault vs Joint Set 2) may be problematic for colorblind
28+ viewers
29+ - No subtitle or descriptive annotation indicating this is a Lower Hemisphere Equal-Area
30+ Projection
31+ - Library mastery is limited — implementation treats Plotly as a static renderer
32+ rather than leveraging interactive capabilities
33+ image_description : ' The plot displays a structural geology stereonet using Schmidt
34+ equal-area (lower-hemisphere) projection. A black primitive circle defines the
35+ boundary, with tick marks every 10 degrees around the perimeter and bold cardinal
36+ direction labels (N, S, E, W) plus degree labels every 30 degrees. Four feature
37+ types are plotted as colored pole points: Bedding (steel blue, ~20 points clustered
38+ in the SE quadrant), Joint Set 1 (orange, ~15 points near the E edge), Joint Set
39+ 2 (green, ~12 points near the S edge), and Fault (red, ~8 points scattered in
40+ the SW quadrant). Semi-transparent great circle arcs are drawn in matching colors
41+ for a subset of planes. Warm-toned KDE density contours (yellow-orange-red gradient)
42+ highlight pole concentration areas, particularly around the Bedding cluster. Subtle
43+ dotted grid lines show 30 and 60 degree small circles plus N-S and E-W diameters.
44+ A bordered legend titled "Feature Type" sits outside the plot to the upper right.
45+ The title reads "stereonet-equal-area · plotly · pyplots.ai" centered at the top.
46+ White background with plotly_white template.'
47+ criteria_checklist :
48+ visual_quality :
49+ score : 26
50+ max : 30
51+ items :
52+ - id : VQ-01
53+ name : Text Legibility
54+ score : 7
55+ max : 8
56+ passed : true
57+ comment : All font sizes explicitly set (title 28, cardinal 22, degrees 15,
58+ legend title 20, legend items 18). Degree labels slightly small at 15pt.
59+ - id : VQ-02
60+ name : No Overlap
61+ score : 6
62+ max : 6
63+ passed : true
64+ comment : No overlapping text or elements. All labels well-separated.
65+ - id : VQ-03
66+ name : Element Visibility
67+ score : 5
68+ max : 6
69+ passed : true
70+ comment : Markers size 13 with white edges clearly visible. Some Bedding poles
71+ overlap slightly in cluster.
72+ - id : VQ-04
73+ name : Color Accessibility
74+ score : 3
75+ max : 4
76+ passed : true
77+ comment : Red and green used together for Fault and Joint Set 2 may be problematic
78+ for colorblind viewers.
79+ - id : VQ-05
80+ name : Layout & Canvas
81+ score : 4
82+ max : 4
83+ passed : true
84+ comment : Stereonet well-centered with good proportions. Legend positioned
85+ outside with adequate margin.
86+ - id : VQ-06
87+ name : Axis Labels & Title
88+ score : 1
89+ max : 2
90+ passed : true
91+ comment : Cardinal directions and degree labels present but no descriptive
92+ subtitle for projection type.
93+ design_excellence :
94+ score : 12
95+ max : 20
96+ items :
97+ - id : DE-01
98+ name : Aesthetic Sophistication
99+ score : 5
100+ max : 8
101+ passed : true
102+ comment : Custom palette, white marker edges, semi-transparent great circles.
103+ Above defaults but not publication-quality.
104+ - id : DE-02
105+ name : Visual Refinement
106+ score : 4
107+ max : 6
108+ passed : true
109+ comment : Axes hidden, subtle dotted grid, tick mark variation. Good attention
110+ to detail.
111+ - id : DE-03
112+ name : Data Storytelling
113+ score : 3
114+ max : 6
115+ passed : true
116+ comment : Density contours highlight orientations but no annotation guiding
117+ viewer to key insights.
118+ spec_compliance :
119+ score : 15
120+ max : 15
121+ items :
122+ - id : SC-01
123+ name : Plot Type
124+ score : 5
125+ max : 5
126+ passed : true
127+ comment : Correct Schmidt equal-area lower-hemisphere projection.
128+ - id : SC-02
129+ name : Required Features
130+ score : 4
131+ max : 4
132+ passed : true
133+ comment : ' All features present: great circles, poles, density contours, tick
134+ marks, cardinal labels, legend, subtle grid.'
135+ - id : SC-03
136+ name : Data Mapping
137+ score : 3
138+ max : 3
139+ passed : true
140+ comment : Strike/dip correctly converted to poles and projected via equal-area
141+ formula.
142+ - id : SC-04
143+ name : Title & Legend
144+ score : 3
145+ max : 3
146+ passed : true
147+ comment : Title matches required format. Legend labels match feature types.
148+ data_quality :
149+ score : 15
150+ max : 15
151+ items :
152+ - id : DQ-01
153+ name : Feature Coverage
154+ score : 6
155+ max : 6
156+ passed : true
157+ comment : Four distinct feature types with different orientation patterns showing
158+ clustering, spread, and variety.
159+ - id : DQ-02
160+ name : Realistic Context
161+ score : 5
162+ max : 5
163+ passed : true
164+ comment : Realistic geological field mapping scenario with plausible structural
165+ features.
166+ - id : DQ-03
167+ name : Appropriate Scale
168+ score : 4
169+ max : 4
170+ passed : true
171+ comment : All values within valid ranges with realistic scatter.
172+ code_quality :
173+ score : 10
174+ max : 10
175+ items :
176+ - id : CQ-01
177+ name : KISS Structure
178+ score : 3
179+ max : 3
180+ passed : true
181+ comment : Linear flow with no functions or classes.
182+ - id : CQ-02
183+ name : Reproducibility
184+ score : 2
185+ max : 2
186+ passed : true
187+ comment : np.random.seed(42) set at start.
188+ - id : CQ-03
189+ name : Clean Imports
190+ score : 2
191+ max : 2
192+ passed : true
193+ comment : All three imports used.
194+ - id : CQ-04
195+ name : Code Elegance
196+ score : 2
197+ max : 2
198+ passed : true
199+ comment : Clean implementation with well-structured projection math.
200+ - id : CQ-05
201+ name : Output & API
202+ score : 1
203+ max : 1
204+ passed : true
205+ comment : Saves as plot.png with correct dimensions.
206+ library_mastery :
207+ score : 5
208+ max : 10
209+ items :
210+ - id : LM-01
211+ name : Idiomatic Usage
212+ score : 3
213+ max : 5
214+ passed : true
215+ comment : Correct go.Figure/go.Scatter/go.Contour usage but stereonet built
216+ entirely in Cartesian with manual math.
217+ - id : LM-02
218+ name : Distinctive Features
219+ score : 2
220+ max : 5
221+ passed : false
222+ comment : HTML export used but hover interactivity completely disabled on all
223+ traces.
224+ verdict : REJECTED
225+ impl_tags :
226+ dependencies :
227+ - scipy
228+ techniques :
229+ - annotations
230+ - html-export
231+ - polar-projection
232+ patterns :
233+ - data-generation
234+ - iteration-over-groups
235+ dataprep :
236+ - kde
237+ styling :
238+ - alpha-blending
239+ - edge-highlighting
240+ - grid-styling
241+ - custom-colormap
0 commit comments