Skip to content

Commit 516daca

Browse files
chore(seaborn): update quality score 89 and review feedback for stereonet-equal-area
1 parent b471006 commit 516daca

2 files changed

Lines changed: 70 additions & 60 deletions

File tree

plots/stereonet-equal-area/implementations/seaborn.py

Lines changed: 2 additions & 2 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)
33
Library: seaborn 0.13.2 | Python 3.14.3
4-
Quality: 85/100 | Created: 2026-03-15
4+
Quality: 89/100 | Created: 2026-03-15
55
"""
66

77
import matplotlib.pyplot as plt

plots/stereonet-equal-area/metadata/seaborn.yaml

Lines changed: 68 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
library: seaborn
22
specification_id: stereonet-equal-area
33
created: '2026-03-15T22:58:38Z'
4-
updated: '2026-03-15T23:11:44Z'
4+
updated: '2026-03-15T23:20:21Z'
55
generated_by: claude-opus-4-5-20251101
66
workflow_run: 23121188794
77
issue: 4576
@@ -10,104 +10,112 @@ library_version: 0.13.2
1010
preview_url: https://storage.googleapis.com/pyplots-images/plots/stereonet-equal-area/seaborn/plot.png
1111
preview_thumb: https://storage.googleapis.com/pyplots-images/plots/stereonet-equal-area/seaborn/plot_thumb.png
1212
preview_html: null
13-
quality_score: 85
13+
quality_score: 89
1414
review:
1515
strengths:
16-
- Excellent spec compliance - all required features implemented correctly (great
17-
circles, poles, density contours, grid, tick marks)
18-
- Correct equal-area projection math with proper pole conversion
19-
- Good data storytelling through marker size encoding by dip angle and clear density
20-
contours
16+
- Perfect spec compliance - all required stereonet features correctly implemented
17+
(great circles, poles, density contours, grid, tick marks, legend)
18+
- Correct equal-area projection math with proper pole conversion formulas
19+
- Excellent color accessibility - blue/orange/purple/teal colorblind-safe palette
20+
- 'Strong design polish: outer glow rings, graduated tick marks, marker shape+size
21+
encoding, FAFAFA background'
2122
- Clean, well-structured code with appropriate complexity for a specialized plot
2223
type
24+
- Good data storytelling through marker size encoding by dip angle and density contour
25+
overlay
2326
weaknesses:
24-
- 'Color accessibility: green/red pairing could be improved for colorblind viewers'
25-
- Design polish could be elevated further (e.g., more refined typography, subtle
26-
background tint)
27-
- Heavy matplotlib reliance limits library mastery score
27+
- Library mastery limited by inherent need for low-level matplotlib for stereonet
28+
primitives
29+
- Degree labels at 14pt could be slightly larger for optimal readability at full
30+
resolution
2831
image_description: 'The plot displays a lower-hemisphere equal-area (Schmidt net)
29-
stereonet projection on a square canvas. A black primitive circle contains the
30-
stereonet with cardinal direction labels (N, S, E, W) in bold at the perimeter
31-
and degree labels every 30° in gray. Tick marks appear every 10° around the circle.
32-
Four feature types are plotted as colored poles (scatter points): Bedding (blue,
33-
#306998), Joint Set 1 (orange, #E88D39), Joint Set 2 (green, #3AA655), and Fault
34-
(red, #C44E52). Each cluster shows distinct orientation patterns. Gray KDE density
35-
contours (filled with low alpha and outlined) highlight preferred orientations.
32+
stereonet projection on a square canvas with a light gray (#FAFAFA) background.
33+
A bold black primitive circle contains the stereonet with subtle outer glow rings
34+
for depth. Cardinal direction labels (N in larger bold, S, E, W in bold) are placed
35+
around the perimeter, with degree labels every 30° in gray. Graduated tick marks
36+
appear every 10° around the circle. Four feature types are plotted as colored
37+
poles with distinct marker shapes: Bedding (blue circles, #306998, clustered in
38+
SW), Joint Set 1 (orange squares, #E88D39, clustered in SW/S), Joint Set 2 (purple
39+
diamonds, #8B5FC7, clustered in NW/N), and Fault (teal triangles, #17A2B8, clustered
40+
in E). Marker sizes vary by dip angle (steeper = larger). KDE density contours
41+
(filled with low alpha, outlined) highlight preferred orientations for each cluster.
3642
Representative great circles are drawn in each feature type''s color at reduced
37-
opacity. A subtle equal-area grid (light gray, thin lines) provides reference.
38-
The legend in the upper left lists all four feature types. The title reads "stereonet-equal-area
39-
· seaborn · pyplots.ai". Marker sizes vary by dip angle, adding visual hierarchy.'
43+
opacity. A subtle equal-area grid (light gray dashed lines) provides reference.
44+
The legend in the upper left lists all four feature types with matching marker
45+
shapes. Title reads "stereonet-equal-area · seaborn · pyplots.ai". An italic annotation
46+
"n = 110 measurements" appears in the bottom right.'
4047
criteria_checklist:
4148
visual_quality:
42-
score: 27
49+
score: 28
4350
max: 30
4451
items:
4552
- id: VQ-01
4653
name: Text Legibility
4754
score: 7
4855
max: 8
4956
passed: true
50-
comment: Font sizes explicitly set (title=24, cardinal=22, degrees=16, legend=15/17).
51-
All clearly readable.
57+
comment: 'Font sizes explicitly set: title=24, cardinal=26/22, degree=14,
58+
legend=15/17, annotation=13. Degree labels at 14pt slightly small but readable.'
5259
- id: VQ-02
5360
name: No Overlap
5461
score: 6
5562
max: 6
5663
passed: true
57-
comment: No text overlap. Legend well-positioned outside the stereonet.
64+
comment: No text overlap. Legend well-positioned outside stereonet with bbox_to_anchor.
5865
- id: VQ-03
5966
name: Element Visibility
6067
score: 5
6168
max: 6
6269
passed: true
63-
comment: Poles clearly visible with good sizing and alpha. Some clusters are
64-
dense but distinguishable.
70+
comment: Poles clearly visible with distinct marker shapes and colors. 110
71+
points with sizes 80-200, alpha=0.88. Some density in Bedding cluster.
6572
- id: VQ-04
6673
name: Color Accessibility
67-
score: 3
74+
score: 4
6875
max: 4
6976
passed: true
70-
comment: Blue-orange excellent. Green-red pairing could be problematic for
71-
deuteranopia/protanopia.
77+
comment: Blue/orange/purple/teal palette is colorblind-safe. No red-green
78+
pairing. Previous color issue resolved.
7279
- id: VQ-05
7380
name: Layout & Canvas
7481
score: 4
7582
max: 4
7683
passed: true
7784
comment: Square 12x12 figure ideal for stereonet. Projection fills canvas
78-
well.
85+
well with balanced margins.
7986
- id: VQ-06
8087
name: Axis Labels & Title
8188
score: 2
8289
max: 2
8390
passed: true
8491
comment: Cardinal directions and degree labels serve as appropriate axis labels
85-
for a stereonet.
92+
for a stereonet projection.
8693
design_excellence:
87-
score: 13
94+
score: 15
8895
max: 20
8996
items:
9097
- id: DE-01
9198
name: Aesthetic Sophistication
92-
score: 5
99+
score: 6
93100
max: 8
94101
passed: true
95-
comment: Custom palette, white marker edges, gray density contours. Above
96-
defaults but not publication-level.
102+
comment: Custom colorblind-safe palette, outer glow rings, graduated tick
103+
marks, marker shape differentiation, size encoding, white edges, FAFAFA
104+
background. Strong design.
97105
- id: DE-02
98106
name: Visual Refinement
99-
score: 4
107+
score: 5
100108
max: 6
101109
passed: true
102-
comment: Spines removed, axes hidden, subtle grid, tick mark differentiation.
103-
Clean white background.
110+
comment: Spines removed, axes hidden, subtle dashed grid, graduated ticks,
111+
outer glow, clean FAFAFA background.
104112
- id: DE-03
105113
name: Data Storytelling
106114
score: 4
107115
max: 6
108116
passed: true
109-
comment: Marker size encoding by dip angle. Four distinct clusters immediately
110-
apparent. Density contours highlight preferred orientations.
117+
comment: Marker size encodes dip angle. Four distinct clusters apparent. KDE
118+
density contours highlight preferred orientations.
111119
spec_compliance:
112120
score: 15
113121
max: 15
@@ -117,51 +125,52 @@ review:
117125
score: 5
118126
max: 5
119127
passed: true
120-
comment: Correct lower-hemisphere equal-area Schmidt net projection.
128+
comment: Correct lower-hemisphere equal-area (Schmidt net) projection.
121129
- id: SC-02
122130
name: Required Features
123131
score: 4
124132
max: 4
125133
passed: true
126134
comment: 'All features present: great circles, poles, density contours, grid,
127-
tick marks, legend.'
135+
tick marks, cardinal labels, legend.'
128136
- id: SC-03
129137
name: Data Mapping
130138
score: 3
131139
max: 3
132140
passed: true
133-
comment: Strike/dip correctly converted to equal-area projection. Pole math
134-
is correct.
141+
comment: Strike/dip correctly converted to equal-area pole projections.
135142
- id: SC-04
136143
name: Title & Legend
137144
score: 3
138145
max: 3
139146
passed: true
140-
comment: Title format correct. Legend labels match data categories.
147+
comment: Title format correct. Legend labels match data categories with correct
148+
marker shapes.
141149
data_quality:
142-
score: 14
150+
score: 15
143151
max: 15
144152
items:
145153
- id: DQ-01
146154
name: Feature Coverage
147-
score: 5
155+
score: 6
148156
max: 6
149157
passed: true
150-
comment: Four feature types with varied orientations and dips. Good variety.
158+
comment: Four feature types with distinct orientations and dip angles. Shows
159+
clustering patterns and varied spreads.
151160
- id: DQ-02
152161
name: Realistic Context
153162
score: 5
154163
max: 5
155164
passed: true
156-
comment: Geological field measurements. Realistic, neutral, scientifically
157-
appropriate.
165+
comment: Geological field measurements. Scientifically appropriate, neutral
166+
context.
158167
- id: DQ-03
159168
name: Appropriate Scale
160169
score: 4
161170
max: 4
162171
passed: true
163172
comment: 110 measurements within spec range. Realistic normal distributions
164-
clipped to valid range.
173+
clipped to valid ranges.
165174
code_quality:
166175
score: 10
167176
max: 10
@@ -184,13 +193,14 @@ review:
184193
score: 2
185194
max: 2
186195
passed: true
187-
comment: All four imports used.
196+
comment: All four imports used (matplotlib, numpy, pandas, seaborn).
188197
- id: CQ-04
189198
name: Code Elegance
190199
score: 2
191200
max: 2
192201
passed: true
193-
comment: Well-structured. Complex math is necessarily so. No fake UI.
202+
comment: Well-structured. Complex projection math is necessarily so. No fake
203+
UI.
194204
- id: CQ-05
195205
name: Output & API
196206
score: 1
@@ -206,15 +216,15 @@ review:
206216
score: 3
207217
max: 5
208218
passed: true
209-
comment: Uses sns.kdeplot, scatterplot, set_theme, despine, color_palette.
210-
But majority is pure matplotlib.
219+
comment: Uses sns.kdeplot, scatterplot, set_theme, set_context, despine, color_palette,
220+
desaturate. But majority is matplotlib.
211221
- id: LM-02
212222
name: Distinctive Features
213223
score: 3
214224
max: 5
215225
passed: true
216-
comment: sns.kdeplot for density contours and scatterplot with hue+size encoding
217-
are seaborn-specific. But heavy lifting is matplotlib.
226+
comment: sns.kdeplot for density contours with hue and sns.scatterplot with
227+
multi-encoding are distinctly seaborn.
218228
verdict: REJECTED
219229
impl_tags:
220230
dependencies: []

0 commit comments

Comments
 (0)