
Scientific Visualization
Apply colorblind-safe palettes and matplotlib helpers when solo builders need publication-quality or dashboard charts without inaccessible defaults.
Overview
Scientific-visualization is an agent skill for the Build phase that applies colorblind-friendly matplotlib palettes and plotting conventions for accessible scientific figures.
Install
npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill scientific-visualizationWhat is this skill?
- Curated Okabe-Ito, Wong, and Paul Tol palette sets with hex constants ready for matplotlib
- apply_palette helper to switch styles without hand-maintaining color lists
- Sequential colormap guidance including viridis and related continuous-data defaults
- Optimized for accessibility in scientific and technical publications
- Python module pattern for import-and-plot workflows
- 8-color Okabe-Ito palette with named hex entries
- Multiple Paul Tol palette variants (bright, muted, light, high-contrast)
Adoption & trust: 671 installs on skills.sh; 27.6k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your charts use default colors that are unreadable for colorblind audiences and weak for print or slide decks.
Who is it for?
Solo builders publishing research figures, technical blog charts, or SaaS analytics screenshots in Python/matplotlib.
Skip if: Teams needing full graphic design systems, non-Python stacks only, or interactive 3D viz pipelines with no matplotlib workflow.
When should I use this skill?
When creating matplotlib or scientific figures that must be colorblind-accessible or match publication-grade palette conventions.
What do I get? / Deliverables
Plots use named, accessibility-tested palette sets and documented colormap choices you can reuse across notebooks, reports, and app exports.
- Palette-applied plot code
- Named hex palette constants for reuse
- Colormap selection notes for continuous series
Recommended Skills
Journey fit
Scientific figures and exported visuals are produced while documenting results or shipping analytics UI—canonical shelf is build/docs where charts attach to the product or report. Docs and report artifacts are where palette choice, colormap selection, and figure styling are decided before share or deploy.
How it compares
Use for palette and figure-accessibility defaults instead of guessing colors in ad-hoc agent chat.
Common Questions / FAQ
Who is scientific-visualization for?
Indie builders and solo developers who produce data or scientific plots in Python and need WCAG-conscious, colorblind-safe series colors without hiring a visualization specialist.
When should I use scientific-visualization?
During Build when writing docs or report figures, before Launch when sharing benchmark charts, or anytime you add matplotlib plots to a SaaS admin or research appendix.
Is scientific-visualization safe to install?
Review the Security Audits panel on this Prism page and the upstream repo before installing; the skill is reference code and palette data, not a network integration.
SKILL.md
READMESKILL.md - Scientific Visualization
""" Colorblind-Friendly Color Palettes for Scientific Visualization This module provides carefully curated color palettes optimized for scientific publications and accessibility. Usage: from color_palettes import OKABE_ITO, apply_palette import matplotlib.pyplot as plt apply_palette('okabe_ito') plt.plot([1, 2, 3], [1, 4, 9]) """ # Okabe-Ito Palette (2008) # The most widely recommended colorblind-friendly palette OKABE_ITO = { 'orange': '#E69F00', 'sky_blue': '#56B4E9', 'bluish_green': '#009E73', 'yellow': '#F0E442', 'blue': '#0072B2', 'vermillion': '#D55E00', 'reddish_purple': '#CC79A7', 'black': '#000000' } OKABE_ITO_LIST = ['#E69F00', '#56B4E9', '#009E73', '#F0E442', '#0072B2', '#D55E00', '#CC79A7', '#000000'] # Wong Palette (Nature Methods) WONG = ['#000000', '#E69F00', '#56B4E9', '#009E73', '#F0E442', '#0072B2', '#D55E00', '#CC79A7'] # Paul Tol Palettes (https://personal.sron.nl/~pault/) TOL_BRIGHT = ['#4477AA', '#EE6677', '#228833', '#CCBB44', '#66CCEE', '#AA3377', '#BBBBBB'] TOL_MUTED = ['#332288', '#88CCEE', '#44AA99', '#117733', '#999933', '#DDCC77', '#CC6677', '#882255', '#AA4499'] TOL_LIGHT = ['#77AADD', '#EE8866', '#EEDD88', '#FFAABB', '#99DDFF', '#44BB99', '#BBCC33', '#AAAA00', '#DDDDDD'] TOL_HIGH_CONTRAST = ['#004488', '#DDAA33', '#BB5566'] # Sequential colormaps (for continuous data) SEQUENTIAL_COLORMAPS = [ 'viridis', # Default, perceptually uniform 'plasma', # Perceptually uniform 'inferno', # Perceptually uniform 'magma', # Perceptually uniform 'cividis', # Optimized for colorblind viewers 'YlOrRd', # Yellow-Orange-Red 'YlGnBu', # Yellow-Green-Blue 'Blues', # Single hue 'Greens', # Single hue 'Purples', # Single hue ] # Diverging colormaps (for data with meaningful center) DIVERGING_COLORMAPS_SAFE = [ 'RdYlBu', # Red-Yellow-Blue (reversed is common) 'RdBu', # Red-Blue 'PuOr', # Purple-Orange (excellent for colorblind) 'BrBG', # Brown-Blue-Green (good for colorblind) 'PRGn', # Purple-Green (use with caution) 'PiYG', # Pink-Yellow-Green (use with caution) ] # Diverging colormaps to AVOID (red-green combinations) DIVERGING_COLORMAPS_AVOID = [ 'RdGn', # Red-Green (problematic!) 'RdYlGn', # Red-Yellow-Green (problematic!) ] # Fluorophore colors (traditional - use with caution) FLUOROPHORES_TRADITIONAL = { 'DAPI': '#0000FF', # Blue 'GFP': '#00FF00', # Green (problematic for colorblind) 'RFP': '#FF0000', # Red 'Cy5': '#FF00FF', # Magenta 'YFP': '#FFFF00', # Yellow } # Fluorophore colors (colorblind-friendly alternatives) FLUOROPHORES_ACCESSIBLE = { 'Channel1': '#0072B2', # Blue 'Channel2': '#E69F00', # Orange (instead of green) 'Channel3': '#D55E00', # Vermillion (instead of red) 'Channel4': '#CC79A7', # Magenta 'Channel5': '#F0E442', # Yellow } # Genomics/Bioinformatics DNA_BASES = { 'A': '#00CC00', # Green 'C': '#0000CC', # Blue 'G': '#FFB300', # Orange 'T': '#CC0000', # Red } DNA_BASES_ACCESSIBLE = { 'A': '#009E73', # Bluish Green 'C': '#0072B2', # Blue 'G': '#E69F00', # Orange 'T': '#D55E00', # Vermillion } def apply_palette(palette_name='okabe_ito'): """ Apply a color palette to matplotlib's default color cycle. Parameters ---------- palette_name : str Name of the palette to apply. Options: 'okabe_ito', 'wong', 'tol_bright', 'tol_muted', 'tol_light', 'tol_high_contrast' Returns ------- list List of colors in the palette Examples -------- >>> apply_palette('okabe_ito') >>> plt.plot([1, 2, 3], [1, 4, 9]) # Uses Okabe-Ito colors """ try: import matplotlib.pyplot as plt except ImportError: print("matplotlib not installed") return