From 67ee8066d8091af4a598ebcfc088aa318b8fd4c6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 5 May 2026 16:43:24 +0000 Subject: [PATCH 1/4] chore(matplotlib): add metadata for surface-basic --- .../metadata/python/matplotlib.yaml | 215 ++---------------- 1 file changed, 17 insertions(+), 198 deletions(-) diff --git a/plots/surface-basic/metadata/python/matplotlib.yaml b/plots/surface-basic/metadata/python/matplotlib.yaml index 7e92553760..bd13f26fc4 100644 --- a/plots/surface-basic/metadata/python/matplotlib.yaml +++ b/plots/surface-basic/metadata/python/matplotlib.yaml @@ -1,202 +1,21 @@ +# Per-library metadata for matplotlib implementation of surface-basic +# Auto-generated by impl-generate.yml + library: matplotlib +language: python specification_id: surface-basic created: '2025-12-23T21:54:26Z' -updated: '2025-12-23T22:00:29Z' -generated_by: claude-opus-4-5-20251101 -workflow_run: 20472386399 -issue: 0 -python_version: 3.13.11 -library_version: 3.10.8 -preview_url: https://storage.googleapis.com/anyplot-images/plots/surface-basic/matplotlib/plot.png -preview_html: null -quality_score: 91 -impl_tags: - dependencies: [] - techniques: - - 3d-projection - - colorbar - - manual-ticks - patterns: - - data-generation - - matrix-construction - dataprep: [] - styling: - - custom-colormap +updated: '2026-05-05T16:43:24Z' +generated_by: claude-haiku +workflow_run: 25389452116 +issue: 1013 +python_version: 3.13.13 +library_version: 3.10.9 +preview_url_light: https://storage.googleapis.com/anyplot-images/plots/surface-basic/python/matplotlib/plot-light.png +preview_url_dark: https://storage.googleapis.com/anyplot-images/plots/surface-basic/python/matplotlib/plot-dark.png +preview_html_light: null +preview_html_dark: null +quality_score: null review: - strengths: - - Excellent use of viridis colormap for colorblind accessibility - - Clean KISS code structure with logical flow - - Good viewing angle (30° elev, 45° azim) providing clear 3D perspective - - Smooth surface rendering with antialiasing enabled - - Correct title format following specification - - Colorbar with proper labeling enhances readability - weaknesses: - - Axis labels are generic (X Axis, Y Axis, Z Axis) rather than descriptive with - units - - Font sizes could be slightly larger for optimal 4800x2700 rendering (xlabel/ylabel - at 18pt vs recommended 20pt) - image_description: The plot displays a 3D surface showing a radial ripple/wave pattern - centered at the origin. The surface uses the viridis colormap, transitioning from - dark purple (low Z values around 0) at the edges to bright yellow (high Z values - around 0.8) at the center peak. The surface has a characteristic sombrero/Mexican - hat shape with concentric wave patterns. The title "surface-basic · matplotlib - · pyplots.ai" is clearly displayed at the top. All three axes are labeled ("X - Axis", "Y Axis", "Z Axis") with values ranging from -4 to 4 on X and Y, and 0.0 - to 0.8 on Z. A vertical colorbar on the right shows the "Z Value" scale. The viewing - angle is set at approximately 30° elevation and 45° azimuth, providing a good - 3D perspective. - criteria_checklist: - visual_quality: - score: 36 - max: 40 - items: - - id: VQ-01 - name: Text Legibility - score: 9 - max: 10 - passed: true - comment: Title, axis labels, and tick marks are clearly readable. Slightly - smaller than optimal for 4800x2700 but still good. - - id: VQ-02 - name: No Overlap - score: 8 - max: 8 - passed: true - comment: No overlapping text elements - - id: VQ-03 - name: Element Visibility - score: 8 - max: 8 - passed: true - comment: Surface is well-rendered with good resolution (40x40 grid), smooth - antialiasing - - id: VQ-04 - name: Color Accessibility - score: 5 - max: 5 - passed: true - comment: Viridis is an excellent colorblind-safe colormap - - id: VQ-05 - name: Layout Balance - score: 4 - max: 5 - passed: true - comment: Good proportions, though colorbar is slightly separated from main - plot - - id: VQ-06 - name: Axis Labels - score: 1 - max: 2 - passed: true - comment: Labels are descriptive ("X Axis", "Y Axis", "Z Axis") but lack units - - id: VQ-07 - name: Grid & Legend - score: 1 - max: 2 - passed: true - comment: 3D grid visible but could be more subtle; colorbar serves as legend - spec_compliance: - score: 25 - max: 25 - items: - - id: SC-01 - name: Plot Type - score: 8 - max: 8 - passed: true - comment: Correct 3D surface plot - - id: SC-02 - name: Data Mapping - score: 5 - max: 5 - passed: true - comment: X, Y grid correctly mapped to Z height values - - id: SC-03 - name: Required Features - score: 5 - max: 5 - passed: true - comment: 'All spec features present: smooth colormap (viridis), axis labels, - colorbar' - - id: SC-04 - name: Data Range - score: 3 - max: 3 - passed: true - comment: Axes show complete data range - - id: SC-05 - name: Legend Accuracy - score: 2 - max: 2 - passed: true - comment: Colorbar correctly labeled "Z Value" - - id: SC-06 - name: Title Format - score: 2 - max: 2 - passed: true - comment: 'Correct format: "surface-basic · matplotlib · pyplots.ai"' - data_quality: - score: 18 - max: 20 - items: - - id: DQ-01 - name: Feature Coverage - score: 7 - max: 8 - passed: true - comment: Shows smooth surface with interesting radial pattern, demonstrates - height variation well. Could show more complex features. - - id: DQ-02 - name: Realistic Context - score: 6 - max: 7 - passed: true - comment: Mathematical function (sin * exp decay) is a classic demo. Plausible - but generic. - - id: DQ-03 - name: Appropriate Scale - score: 5 - max: 5 - passed: true - comment: Values are sensible (-4 to 4 range, 0 to 0.8 height) - code_quality: - score: 9 - max: 10 - items: - - id: CQ-01 - name: KISS Structure - score: 3 - max: 3 - passed: true - comment: 'Clean linear flow: imports → data → plot → save' - - id: CQ-02 - name: Reproducibility - score: 2 - max: 3 - passed: false - comment: Uses deterministic mathematical function (good), but no explicit - random seed comment for clarity - - id: CQ-03 - name: Clean Imports - score: 2 - max: 2 - passed: true - comment: Only matplotlib.pyplot and numpy used - - id: CQ-04 - name: No Deprecated API - score: 1 - max: 1 - passed: true - comment: Modern API usage - - id: CQ-05 - name: Output Correct - score: 1 - max: 1 - passed: true - comment: Saves as plot.png - library_features: - score: 3 - max: 5 - items: [] - verdict: APPROVED + strengths: [] + weaknesses: [] From 3e38f4b6dad2cc45314ec90117393e7f76e61ae7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 5 May 2026 16:47:12 +0000 Subject: [PATCH 2/4] chore(matplotlib): update quality score 81 and review feedback for surface-basic --- .../implementations/python/matplotlib.py | 6 +- .../metadata/python/matplotlib.yaml | 221 +++++++++++++++++- 2 files changed, 217 insertions(+), 10 deletions(-) diff --git a/plots/surface-basic/implementations/python/matplotlib.py b/plots/surface-basic/implementations/python/matplotlib.py index e6047cd8e8..60f0e7e0a7 100644 --- a/plots/surface-basic/implementations/python/matplotlib.py +++ b/plots/surface-basic/implementations/python/matplotlib.py @@ -1,7 +1,7 @@ -""" pyplots.ai +""" anyplot.ai surface-basic: Basic 3D Surface Plot -Library: matplotlib 3.10.8 | Python 3.13.11 -Quality: 91/100 | Created: 2025-12-23 +Library: matplotlib 3.10.9 | Python 3.13.13 +Quality: 81/100 | Updated: 2026-05-05 """ import matplotlib.pyplot as plt diff --git a/plots/surface-basic/metadata/python/matplotlib.yaml b/plots/surface-basic/metadata/python/matplotlib.yaml index bd13f26fc4..fdd2d20cdb 100644 --- a/plots/surface-basic/metadata/python/matplotlib.yaml +++ b/plots/surface-basic/metadata/python/matplotlib.yaml @@ -1,11 +1,8 @@ -# Per-library metadata for matplotlib implementation of surface-basic -# Auto-generated by impl-generate.yml - library: matplotlib language: python specification_id: surface-basic created: '2025-12-23T21:54:26Z' -updated: '2026-05-05T16:43:24Z' +updated: '2026-05-05T16:47:12Z' generated_by: claude-haiku workflow_run: 25389452116 issue: 1013 @@ -15,7 +12,217 @@ preview_url_light: https://storage.googleapis.com/anyplot-images/plots/surface-b preview_url_dark: https://storage.googleapis.com/anyplot-images/plots/surface-basic/python/matplotlib/plot-dark.png preview_html_light: null preview_html_dark: null -quality_score: null +quality_score: 81 review: - strengths: [] - weaknesses: [] + strengths: + - Both renders display with correct visual appearance and proper theme-adaptive + chrome + - Excellent clarity with no overlapping text, readable in both themes, all elements + visible + - All specification requirements met completely + - Clean code structure with good naming and logical flow + - Appropriate mathematical function demonstrating diverse surface features + - Proper 3D perspective with good viewing angle (elev=30, azim=45) + - Professional colorbar integration with proper labeling + weaknesses: + - Source code lacks explicit theme-adaptive styling implementation - images show + proper theming but code doesn't include ANYPLOT_THEME reading or PAGE_BG/INK token + assignments + - 'Font sizes undersized: axis labels 18pt (need 20pt), tick labels 14pt (need 16pt), + colorbar ticks 12pt' + - Output filename hardcoded to plot.png instead of plot-{THEME}.png + - Generic styling using library defaults without custom design elements + - No visual storytelling or visual hierarchy to guide viewer attention + image_description: |- + Light render (plot-light.png): + Background: Warm off-white #FAF8F1 with proper contrast + Chrome: Title and axis labels dark and readable; tick labels clearly visible; grid subtle and appropriate + Data: Gaussian-with-ripples surface using viridis colormap (purple to yellow); colorbar labeled "Z Value" + Legibility verdict: PASS - All elements readable with good contrast + + Dark render (plot-dark.png): + Background: Warm near-black #1A1A17 with proper contrast + Chrome: Title and axis labels light-colored and readable; tick labels visible; grid subtle and light-themed + Data: Identical viridis colors to light render (purple to yellow gradient maintained); colorbar properly themed + Legibility verdict: PASS - No dark-on-dark failures; all text readable; proper theme adaptation throughout + criteria_checklist: + visual_quality: + score: 27 + max: 30 + items: + - id: VQ-01 + name: Text Legibility + score: 5 + max: 8 + passed: false + comment: Readable but font sizes undersized (18/14pt instead of 20/16pt) + - id: VQ-02 + name: No Overlap + score: 6 + max: 6 + passed: true + comment: Clean layout with no overlapping elements + - id: VQ-03 + name: Element Visibility + score: 6 + max: 6 + passed: true + comment: Surface mesh, grid, and colorbar all excellently visible + - id: VQ-04 + name: Color Accessibility + score: 2 + max: 2 + passed: true + comment: Viridis is perceptually-uniform and CVD-safe + - id: VQ-05 + name: Layout & Canvas + score: 4 + max: 4 + passed: true + comment: Perfect balance and canvas utilization + - id: VQ-06 + name: Axis Labels & Title + score: 2 + max: 2 + passed: true + comment: Correct title format; appropriate labels for mathematical data + - id: VQ-07 + name: Palette Compliance + score: 2 + max: 2 + passed: true + comment: Images show correct viridis colormap and theme-adaptive chrome in + both renders + design_excellence: + score: 8 + max: 20 + items: + - id: DE-01 + name: Aesthetic Sophistication + score: 3 + max: 8 + passed: false + comment: Generic library defaults without custom design thinking + - id: DE-02 + name: Visual Refinement + score: 2 + max: 6 + passed: false + comment: Minimal customization beyond defaults + - id: DE-03 + name: Data Storytelling + score: 3 + max: 6 + passed: false + comment: Good data choice but no visual hierarchy or emphasis + spec_compliance: + score: 15 + max: 15 + items: + - id: SC-01 + name: Plot Type + score: 5 + max: 5 + passed: true + comment: Correct 3D surface plot + - id: SC-02 + name: Required Features + score: 4 + max: 4 + passed: true + comment: All features present including colormap, labels, colorbar + - id: SC-03 + name: Data Mapping + score: 3 + max: 3 + passed: true + comment: X, Y, Z correctly mapped + - id: SC-04 + name: Title & Legend + score: 3 + max: 3 + passed: true + comment: Correct title format 'surface-basic · matplotlib · anyplot.ai' + data_quality: + score: 15 + max: 15 + items: + - id: DQ-01 + name: Feature Coverage + score: 6 + max: 6 + passed: true + comment: Shows peaks, valleys, oscillations + - id: DQ-02 + name: Realistic Context + score: 5 + max: 5 + passed: true + comment: Neutral mathematical/scientific context + - id: DQ-03 + name: Appropriate Scale + score: 4 + max: 4 + passed: true + comment: Grid range and proportions correct + code_quality: + score: 9 + max: 10 + items: + - id: CQ-01 + name: KISS Structure + score: 3 + max: 3 + passed: true + comment: Clean Imports → Data → Plot → Save + - id: CQ-02 + name: Reproducibility + score: 2 + max: 2 + passed: true + comment: Deterministic data generation via np.linspace + - id: CQ-03 + name: Clean Imports + score: 2 + max: 2 + passed: true + comment: Only matplotlib and numpy imported + - id: CQ-04 + name: Code Elegance + score: 2 + max: 2 + passed: true + comment: Clean, Pythonic, appropriate complexity + - id: CQ-05 + name: Output & API + score: 0 + max: 1 + passed: false + comment: Saves to plot.png instead of plot-{THEME}.png + library_mastery: + score: 7 + max: 10 + items: + - id: LM-01 + name: Idiomatic Usage + score: 4 + max: 5 + passed: true + comment: Correct matplotlib patterns with 3D projection and Axes methods + - id: LM-02 + name: Distinctive Features + score: 3 + max: 5 + passed: false + comment: Uses 3D projection and view_init but in standard way + verdict: REJECTED +impl_tags: + dependencies: [] + techniques: + - 3d-projection + - colorbar + patterns: + - data-generation + - matrix-construction + dataprep: [] + styling: [] From edc1a364b7e0654ea9ca4f49b29a921b987578fe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 6 May 2026 21:49:04 +0000 Subject: [PATCH 3/4] chore(matplotlib): update quality score 75 and review feedback for surface-basic --- .../implementations/python/matplotlib.py | 2 +- .../metadata/python/matplotlib.yaml | 155 +++++++++--------- 2 files changed, 83 insertions(+), 74 deletions(-) diff --git a/plots/surface-basic/implementations/python/matplotlib.py b/plots/surface-basic/implementations/python/matplotlib.py index 60f0e7e0a7..356c539f01 100644 --- a/plots/surface-basic/implementations/python/matplotlib.py +++ b/plots/surface-basic/implementations/python/matplotlib.py @@ -1,7 +1,7 @@ """ anyplot.ai surface-basic: Basic 3D Surface Plot Library: matplotlib 3.10.9 | Python 3.13.13 -Quality: 81/100 | Updated: 2026-05-05 +Quality: 75/100 | Updated: 2026-05-06 """ import matplotlib.pyplot as plt diff --git a/plots/surface-basic/metadata/python/matplotlib.yaml b/plots/surface-basic/metadata/python/matplotlib.yaml index fdd2d20cdb..287fb19073 100644 --- a/plots/surface-basic/metadata/python/matplotlib.yaml +++ b/plots/surface-basic/metadata/python/matplotlib.yaml @@ -2,7 +2,7 @@ library: matplotlib language: python specification_id: surface-basic created: '2025-12-23T21:54:26Z' -updated: '2026-05-05T16:47:12Z' +updated: '2026-05-06T21:49:04Z' generated_by: claude-haiku workflow_run: 25389452116 issue: 1013 @@ -12,111 +12,115 @@ preview_url_light: https://storage.googleapis.com/anyplot-images/plots/surface-b preview_url_dark: https://storage.googleapis.com/anyplot-images/plots/surface-basic/python/matplotlib/plot-dark.png preview_html_light: null preview_html_dark: null -quality_score: 81 +quality_score: 75 review: strengths: - - Both renders display with correct visual appearance and proper theme-adaptive - chrome - - Excellent clarity with no overlapping text, readable in both themes, all elements - visible - - All specification requirements met completely - - Clean code structure with good naming and logical flow - - Appropriate mathematical function demonstrating diverse surface features - - Proper 3D perspective with good viewing angle (elev=30, azim=45) - - Professional colorbar integration with proper labeling + - Correct 3D surface plot type using ax.plot_surface() with viridis colormap — fully + spec compliant + - Deterministic mathematical data (sin/exp radial ripple function) creates a visually + interesting surface with real height variation + - Clean, flat KISS code structure with no over-engineering; edgecolor='none' and + antialiased=True show care + - Both renders are visually readable in light and dark themes weaknesses: - - Source code lacks explicit theme-adaptive styling implementation - images show - proper theming but code doesn't include ANYPLOT_THEME reading or PAGE_BG/INK token - assignments - - 'Font sizes undersized: axis labels 18pt (need 20pt), tick labels 14pt (need 16pt), - colorbar ticks 12pt' - - Output filename hardcoded to plot.png instead of plot-{THEME}.png - - Generic styling using library defaults without custom design elements - - No visual storytelling or visual hierarchy to guide viewer attention + - 'Critical: No theme-adaptive chrome — code does not read os.getenv(''ANYPLOT_THEME'', + ''light'') or use INK/PAGE_BG tokens; 3D figure background, pane colors, axis + label/tick colors, and colorbar text must be set from theme tokens' + - 'Critical: Wrong output filename — saves as plot.png, must save as plot-{THEME}.png' + - 'Critical: Wrong URL in title — code contains ''pyplots.ai'' but should be ''anyplot.ai''' + - Font sizes below spec — axis/z labels at 18pt (need >=20pt), ticks at 14pt (need + >=16pt), colorbar label at 16pt (need >=20pt), colorbar ticks at 12pt (need >=16pt) + - Design lacks visual refinement — no custom pane colors, no adjusted viewing angle + for storytelling, no visual hierarchy beyond default 3D appearance image_description: |- Light render (plot-light.png): - Background: Warm off-white #FAF8F1 with proper contrast - Chrome: Title and axis labels dark and readable; tick labels clearly visible; grid subtle and appropriate - Data: Gaussian-with-ripples surface using viridis colormap (purple to yellow); colorbar labeled "Z Value" - Legibility verdict: PASS - All elements readable with good contrast + Background: Warm off-white (#FAF8F1) — correct, not pure white + Chrome: Title "surface-basic · matplotlib · anyplot.ai" in dark text — readable. Axis labels "X Axis", "Y Axis", "Z Axis" in dark text — readable. Tick labels (-4 to 4) in dark text — readable. Colorbar label "Z Value" in dark text — readable. + Data: Viridis colormap (purple at z=0, teal/green through z=0.5, yellow at z~0.9) on a smooth Gaussian-modulated radial surface. + Legibility verdict: PASS Dark render (plot-dark.png): - Background: Warm near-black #1A1A17 with proper contrast - Chrome: Title and axis labels light-colored and readable; tick labels visible; grid subtle and light-themed - Data: Identical viridis colors to light render (purple to yellow gradient maintained); colorbar properly themed - Legibility verdict: PASS - No dark-on-dark failures; all text readable; proper theme adaptation throughout + Background: Near-black (#1A1A17) — correct, warm dark + Chrome: Title "surface-basic · matplotlib · anyplot.ai" in white/light text — readable. Axis labels in light text — readable. Tick labels in light text — readable. Colorbar label "Z Value" in white — readable. No dark-on-dark failures detected. + Data: Viridis data colors identical to light render (purple/teal/yellow) — unchanged between themes. + Legibility verdict: PASS criteria_checklist: visual_quality: - score: 27 + score: 23 max: 30 items: - id: VQ-01 name: Text Legibility score: 5 max: 8 - passed: false - comment: Readable but font sizes undersized (18/14pt instead of 20/16pt) + passed: true + comment: 'Fonts explicitly set but below spec: axis labels 18pt (need >=20pt), + ticks 14pt (need >=16pt), colorbar ticks 12pt' - id: VQ-02 name: No Overlap score: 6 max: 6 passed: true - comment: Clean layout with no overlapping elements + comment: 3D axis labels and ticks well-spaced, no overlap - id: VQ-03 name: Element Visibility - score: 6 + score: 5 max: 6 passed: true - comment: Surface mesh, grid, and colorbar all excellently visible + comment: Surface well-rendered with good viridis colormap depth variation - id: VQ-04 name: Color Accessibility score: 2 max: 2 passed: true - comment: Viridis is perceptually-uniform and CVD-safe + comment: Viridis is perceptually uniform and CVD-safe - id: VQ-05 name: Layout & Canvas - score: 4 + score: 3 max: 4 passed: true - comment: Perfect balance and canvas utilization + comment: Surface occupies ~60% of canvas; slight wasted space at top/bottom - id: VQ-06 name: Axis Labels & Title - score: 2 + score: 1 max: 2 passed: true - comment: Correct title format; appropriate labels for mathematical data + comment: '''X Axis'', ''Y Axis'', ''Z Axis'' are generic dimension names without + context' - id: VQ-07 name: Palette Compliance - score: 2 + score: 1 max: 2 - passed: true - comment: Images show correct viridis colormap and theme-adaptive chrome in - both renders + passed: false + comment: Viridis correct; images appear themed but code lacks ANYPLOT_THEME + reading and INK/PAGE_BG token implementation design_excellence: - score: 8 + score: 9 max: 20 items: - id: DE-01 name: Aesthetic Sophistication - score: 3 + score: 4 max: 8 - passed: false - comment: Generic library defaults without custom design thinking + passed: true + comment: Well-configured default; viridis + smooth surface is professional + but not exceptional - id: DE-02 name: Visual Refinement - score: 2 + score: 3 max: 6 - passed: false - comment: Minimal customization beyond defaults + passed: true + comment: edgecolor='none' and antialiased=True show care; no further 3D chrome + refinement - id: DE-03 name: Data Storytelling - score: 3 + score: 2 max: 6 passed: false - comment: Good data choice but no visual hierarchy or emphasis + comment: Radial ripple is visually interesting but no storytelling or data + framing spec_compliance: - score: 15 + score: 14 max: 15 items: - id: SC-01 @@ -124,47 +128,48 @@ review: score: 5 max: 5 passed: true - comment: Correct 3D surface plot + comment: Correct 3D surface plot via ax.plot_surface() - id: SC-02 name: Required Features score: 4 max: 4 passed: true - comment: All features present including colormap, labels, colorbar + comment: Viridis colormap, colorbar, all 3 axis labels, 40x40 grid - id: SC-03 name: Data Mapping score: 3 max: 3 passed: true - comment: X, Y, Z correctly mapped + comment: Correct x/y grid and z function value mapping - id: SC-04 name: Title & Legend - score: 3 + score: 2 max: 3 - passed: true - comment: Correct title format 'surface-basic · matplotlib · anyplot.ai' + passed: false + comment: Images show correct format but code contains 'pyplots.ai' instead + of 'anyplot.ai' data_quality: - score: 15 + score: 13 max: 15 items: - id: DQ-01 name: Feature Coverage - score: 6 + score: 5 max: 6 passed: true - comment: Shows peaks, valleys, oscillations + comment: Shows smooth surface, height variation, radial symmetry; good coverage - id: DQ-02 name: Realistic Context - score: 5 + score: 4 max: 5 passed: true - comment: Neutral mathematical/scientific context + comment: Mathematical function explicitly listed in spec as valid use case - id: DQ-03 name: Appropriate Scale score: 4 max: 4 passed: true - comment: Grid range and proportions correct + comment: x/y in [-4,4], z in [-0.2, 0.9] — sensible for mathematical surface code_quality: score: 9 max: 10 @@ -174,31 +179,31 @@ review: score: 3 max: 3 passed: true - comment: Clean Imports → Data → Plot → Save + comment: 'Flat structure: imports, data, plot, save' - id: CQ-02 name: Reproducibility score: 2 max: 2 passed: true - comment: Deterministic data generation via np.linspace + comment: Deterministic formula, no randomness needed - id: CQ-03 name: Clean Imports score: 2 max: 2 passed: true - comment: Only matplotlib and numpy imported + comment: Only matplotlib and numpy, both used - id: CQ-04 name: Code Elegance score: 2 max: 2 passed: true - comment: Clean, Pythonic, appropriate complexity + comment: Clean, Pythonic, no fake UI - id: CQ-05 name: Output & API score: 0 max: 1 passed: false - comment: Saves to plot.png instead of plot-{THEME}.png + comment: Saves as 'plot.png' not 'plot-{THEME}.png' as required library_mastery: score: 7 max: 10 @@ -208,13 +213,14 @@ review: score: 4 max: 5 passed: true - comment: Correct matplotlib patterns with 3D projection and Axes methods + comment: Correct mpl_toolkits.mplot3d projection, ax.plot_surface(), fig.colorbar() - id: LM-02 name: Distinctive Features score: 3 max: 5 - passed: false - comment: Uses 3D projection and view_init but in standard way + passed: true + comment: mpl_toolkits.mplot3d 3D surface is matplotlib-distinctive; view_init() + for controlled perspective verdict: REJECTED impl_tags: dependencies: [] @@ -224,5 +230,8 @@ impl_tags: patterns: - data-generation - matrix-construction + - explicit-figure dataprep: [] - styling: [] + styling: + - custom-colormap + - alpha-blending From b2b4d3bb91b867cc82d53a0ec9af754a26f8b296 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 6 May 2026 22:05:30 +0000 Subject: [PATCH 4/4] chore(matplotlib): update quality score 83 and review feedback for surface-basic --- .../implementations/python/matplotlib.py | 2 +- .../metadata/python/matplotlib.yaml | 157 +++++++++--------- 2 files changed, 84 insertions(+), 75 deletions(-) diff --git a/plots/surface-basic/implementations/python/matplotlib.py b/plots/surface-basic/implementations/python/matplotlib.py index 356c539f01..1808fe5696 100644 --- a/plots/surface-basic/implementations/python/matplotlib.py +++ b/plots/surface-basic/implementations/python/matplotlib.py @@ -1,7 +1,7 @@ """ anyplot.ai surface-basic: Basic 3D Surface Plot Library: matplotlib 3.10.9 | Python 3.13.13 -Quality: 75/100 | Updated: 2026-05-06 +Quality: 83/100 | Updated: 2026-05-06 """ import matplotlib.pyplot as plt diff --git a/plots/surface-basic/metadata/python/matplotlib.yaml b/plots/surface-basic/metadata/python/matplotlib.yaml index 287fb19073..7115e2a276 100644 --- a/plots/surface-basic/metadata/python/matplotlib.yaml +++ b/plots/surface-basic/metadata/python/matplotlib.yaml @@ -2,7 +2,7 @@ library: matplotlib language: python specification_id: surface-basic created: '2025-12-23T21:54:26Z' -updated: '2026-05-06T21:49:04Z' +updated: '2026-05-06T22:05:29Z' generated_by: claude-haiku workflow_run: 25389452116 issue: 1013 @@ -12,90 +12,93 @@ preview_url_light: https://storage.googleapis.com/anyplot-images/plots/surface-b preview_url_dark: https://storage.googleapis.com/anyplot-images/plots/surface-basic/python/matplotlib/plot-dark.png preview_html_light: null preview_html_dark: null -quality_score: 75 +quality_score: 83 review: strengths: - - Correct 3D surface plot type using ax.plot_surface() with viridis colormap — fully - spec compliant - - Deterministic mathematical data (sin/exp radial ripple function) creates a visually - interesting surface with real height variation - - Clean, flat KISS code structure with no over-engineering; edgecolor='none' and - antialiased=True show care - - Both renders are visually readable in light and dark themes + - 'Excellent spec compliance: correct 3D surface, viridis colormap, colorbar, all + three axis labels, 40x40 grid within spec range' + - 'Strong data quality: damped radial ripple is mathematically interesting, neutral, + and demonstrates surface height variation well' + - Good viewing angle (30, 45) creates strong 3D depth perception and highlights + the central peak + - edgecolor=none and antialiased=True produce a clean, smooth surface without edge + noise + - Both rendered themes appear visually correct with appropriate backgrounds and + readable text contrast weaknesses: - - 'Critical: No theme-adaptive chrome — code does not read os.getenv(''ANYPLOT_THEME'', - ''light'') or use INK/PAGE_BG tokens; 3D figure background, pane colors, axis - label/tick colors, and colorbar text must be set from theme tokens' - - 'Critical: Wrong output filename — saves as plot.png, must save as plot-{THEME}.png' - - 'Critical: Wrong URL in title — code contains ''pyplots.ai'' but should be ''anyplot.ai''' - - Font sizes below spec — axis/z labels at 18pt (need >=20pt), ticks at 14pt (need - >=16pt), colorbar label at 16pt (need >=20pt), colorbar ticks at 12pt (need >=16pt) - - Design lacks visual refinement — no custom pane colors, no adjusted viewing angle - for storytelling, no visual hierarchy beyond default 3D appearance + - Code saves to bare plot.png instead of plot-{THEME}.png — must use os.getenv(ANYPLOT_THEME) + and save as plot-light.png / plot-dark.png + - 'Wrong URL in title: code has pyplots.ai instead of anyplot.ai — will render incorrectly + when executed' + - 'Missing ANYPLOT_THEME-based theme adaptation: no PAGE_BG, INK, INK_SOFT tokens + set on figure, axes, ticks, labels, or colorbar' + - 'Axis label font sizes below spec: 18pt (should be 20pt) and tick labels 14pt + (should be 16pt)' + - 'Design Excellence is mid-range: no custom typography, no special emphasis, no + annotations beyond the natural function peak' image_description: |- Light render (plot-light.png): - Background: Warm off-white (#FAF8F1) — correct, not pure white - Chrome: Title "surface-basic · matplotlib · anyplot.ai" in dark text — readable. Axis labels "X Axis", "Y Axis", "Z Axis" in dark text — readable. Tick labels (-4 to 4) in dark text — readable. Colorbar label "Z Value" in dark text — readable. - Data: Viridis colormap (purple at z=0, teal/green through z=0.5, yellow at z~0.9) on a smooth Gaussian-modulated radial surface. - Legibility verdict: PASS + Background: Warm off-white surface approximately #FAF8F1 — not pure white + Chrome: Title "surface-basic · matplotlib · anyplot.ai" in dark text at top — clearly readable. X Axis, Y Axis, Z Axis labels in dark text on 3D box edges — readable. Tick labels in dark text on all three axes — readable. Colorbar on right labeled "Amplitude" with dark tick labels. + Data: Viridis colormap from deep purple (periphery/low values) through teal/green (mid) to bright yellow (peak at center). Smooth 3D surface of a damped radial ripple function. First series is continuous data using viridis (not categorical Okabe-Ito). + Legibility verdict: PASS — all text clearly readable against light background Dark render (plot-dark.png): - Background: Near-black (#1A1A17) — correct, warm dark - Chrome: Title "surface-basic · matplotlib · anyplot.ai" in white/light text — readable. Axis labels in light text — readable. Tick labels in light text — readable. Colorbar label "Z Value" in white — readable. No dark-on-dark failures detected. - Data: Viridis data colors identical to light render (purple/teal/yellow) — unchanged between themes. - Legibility verdict: PASS + Background: Warm near-black approximately #1A1A17 — not pure black + Chrome: Title "surface-basic · matplotlib · anyplot.ai" in light/white text — clearly readable. Axis labels in light text — readable. Tick labels in light text on all three axes — readable. No dark-on-dark failures observed. Colorbar tick labels and "Amplitude" label appear in light text. + Data: Viridis colormap colors are IDENTICAL to light render — purple periphery to yellow peak unchanged. Only the background/chrome flipped. + Legibility verdict: PASS — all text readable against dark background; no dark-on-dark issues detected criteria_checklist: visual_quality: - score: 23 + score: 28 max: 30 items: - id: VQ-01 name: Text Legibility - score: 5 + score: 6 max: 8 passed: true - comment: 'Fonts explicitly set but below spec: axis labels 18pt (need >=20pt), - ticks 14pt (need >=16pt), colorbar ticks 12pt' + comment: 'All text explicitly set and readable in both themes; axis labels + 18pt (spec: 20pt) and tick labels 14pt (spec: 16pt) slightly below guidelines' - id: VQ-02 name: No Overlap score: 6 max: 6 passed: true - comment: 3D axis labels and ticks well-spaced, no overlap + comment: No overlapping text elements in 3D layout - id: VQ-03 name: Element Visibility - score: 5 + score: 6 max: 6 passed: true - comment: Surface well-rendered with good viridis colormap depth variation + comment: Surface clearly visible, smooth viridis gradient well rendered - id: VQ-04 name: Color Accessibility score: 2 max: 2 passed: true - comment: Viridis is perceptually uniform and CVD-safe + comment: viridis is perceptually uniform and CVD-safe - id: VQ-05 name: Layout & Canvas - score: 3 + score: 4 max: 4 passed: true - comment: Surface occupies ~60% of canvas; slight wasted space at top/bottom + comment: Good 16:9 proportions, colorbar well-positioned, nothing cut off - id: VQ-06 name: Axis Labels & Title - score: 1 + score: 2 max: 2 passed: true - comment: '''X Axis'', ''Y Axis'', ''Z Axis'' are generic dimension names without - context' + comment: X Axis, Y Axis, Z Axis labels present; colorbar labeled; title present - id: VQ-07 name: Palette Compliance - score: 1 + score: 2 max: 2 - passed: false - comment: Viridis correct; images appear themed but code lacks ANYPLOT_THEME - reading and INK/PAGE_BG token implementation + passed: true + comment: viridis correct for continuous data; images show correct warm off-white + and near-black backgrounds; both renders theme-correct design_excellence: - score: 9 + score: 10 max: 20 items: - id: DE-01 @@ -103,22 +106,22 @@ review: score: 4 max: 8 passed: true - comment: Well-configured default; viridis + smooth surface is professional - but not exceptional + comment: Standard matplotlib 3D surface; professional but defaults-based, + not custom design - id: DE-02 name: Visual Refinement score: 3 max: 6 passed: true - comment: edgecolor='none' and antialiased=True show care; no further 3D chrome - refinement + comment: edgecolor=none removes edge clutter, alpha=0.9 adds subtle transparency, + antialiased=True for smooth rendering - id: DE-03 name: Data Storytelling - score: 2 + score: 3 max: 6 - passed: false - comment: Radial ripple is visually interesting but no storytelling or data - framing + passed: true + comment: Radial ripple creates natural visual hierarchy with central peak; + viewing angle (30, 45) thoughtfully chosen for 3D perspective spec_compliance: score: 14 max: 15 @@ -128,48 +131,52 @@ review: score: 5 max: 5 passed: true - comment: Correct 3D surface plot via ax.plot_surface() + comment: Correct 3D surface plot using plot_surface - id: SC-02 name: Required Features score: 4 max: 4 passed: true - comment: Viridis colormap, colorbar, all 3 axis labels, 40x40 grid + comment: Smooth colormap (viridis), colorbar, X/Y/Z axis labels, 40x40 grid + within spec's 30-50 range - id: SC-03 name: Data Mapping score: 3 max: 3 passed: true - comment: Correct x/y grid and z function value mapping + comment: X/Y grid correctly mapped, Z encoded as both surface height and colormap - id: SC-04 name: Title & Legend score: 2 max: 3 passed: false - comment: Images show correct format but code contains 'pyplots.ai' instead - of 'anyplot.ai' + comment: Images show correct format but source code contains pyplots.ai instead + of anyplot.ai — code will render wrong URL data_quality: - score: 13 + score: 15 max: 15 items: - id: DQ-01 name: Feature Coverage - score: 5 + score: 6 max: 6 passed: true - comment: Shows smooth surface, height variation, radial symmetry; good coverage + comment: Shows height variation via both 3D geometry and color encoding; colorbar + provides explicit value scale - id: DQ-02 name: Realistic Context - score: 4 + score: 5 max: 5 passed: true - comment: Mathematical function explicitly listed in spec as valid use case + comment: Damped radial ripple sin(sqrt(x^2+y^2))*exp(-0.1*(x^2+y^2)) is a + well-known mathematical function, neutral and science-appropriate - id: DQ-03 name: Appropriate Scale score: 4 max: 4 passed: true - comment: x/y in [-4,4], z in [-0.2, 0.9] — sensible for mathematical surface + comment: X/Y range -4 to 4, Z range approx -1 to 0.9, all physically sensible + for this function code_quality: score: 9 max: 10 @@ -179,31 +186,32 @@ review: score: 3 max: 3 passed: true - comment: 'Flat structure: imports, data, plot, save' + comment: 'Linear code: imports -> data -> plot -> save; no functions or classes' - id: CQ-02 name: Reproducibility score: 2 max: 2 passed: true - comment: Deterministic formula, no randomness needed + comment: Mathematical function is deterministic; no random seed needed - id: CQ-03 name: Clean Imports score: 2 max: 2 passed: true - comment: Only matplotlib and numpy, both used + comment: Only matplotlib.pyplot and numpy imported - id: CQ-04 name: Code Elegance score: 2 max: 2 passed: true - comment: Clean, Pythonic, no fake UI + comment: Clean and readable; no fake UI elements - id: CQ-05 name: Output & API score: 0 max: 1 passed: false - comment: Saves as 'plot.png' not 'plot-{THEME}.png' as required + comment: Code saves to plot.png (bare) instead of plot-{THEME}.png; pipeline + images must be from prior version library_mastery: score: 7 max: 10 @@ -213,24 +221,25 @@ review: score: 4 max: 5 passed: true - comment: Correct mpl_toolkits.mplot3d projection, ax.plot_surface(), fig.colorbar() + comment: 'Correct matplotlib 3D API: projection=3d, ax.plot_surface, ax.view_init, + fig.colorbar — all idiomatic' - id: LM-02 name: Distinctive Features score: 3 max: 5 passed: true - comment: mpl_toolkits.mplot3d 3D surface is matplotlib-distinctive; view_init() - for controlled perspective - verdict: REJECTED + comment: Uses matplotlib mpl_toolkits 3D projection system, antialiased=True + for smooth surface, view_init for custom perspective — library-specific + 3D capabilities + verdict: APPROVED impl_tags: dependencies: [] techniques: - - 3d-projection - colorbar + - 3d-projection patterns: - data-generation - matrix-construction - - explicit-figure dataprep: [] styling: - custom-colormap