bio-data-visualization-color-palettes
Guidance on selecting accessible, colorblind-friendly palettes for biological and scientific data plotting.
Install
mkdir -p .claude/skills/bio-data-visualization-color-palettes && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/11363" && unzip -o skill.zip -d .claude/skills/bio-data-visualization-color-palettes && rm skill.zipInstalls to .claude/skills/bio-data-visualization-color-palettes
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Select and apply colorblind-friendly palettes for scientific figures using viridis, RColorBrewer, and custom color schemes. Use when selecting colorblind-friendly palettes for figures.Key capabilities
- →Select color palettes
- →Ensure accessibility
- →Apply scientific schemes
- →Simulate colorblindness
How it works
It recommends palettes based on data type (sequential, diverging, qualitative) and verifies accessibility.
Inputs & outputs
When to use bio-data-visualization-color-palettes
- →Choosing scientific palettes
- →Ensuring colorblind accessibility
- →Plotting biological data
About this skill
Version Compatibility
Reference examples tested with: ggplot2 3.5+, matplotlib 3.8+, seaborn 0.13+
Before using code patterns, verify installed versions match. If versions differ:
- Python:
pip show <package>thenhelp(module.function)to check signatures - R:
packageVersion('<pkg>')then?function_nameto verify parameters
If code throws ImportError, AttributeError, or TypeError, introspect the installed package and adapt the example to match the actual API rather than retrying.
Color Palettes
"Choose colors for a biological visualization" → Select appropriate color palettes for sequential data (expression levels), diverging data (fold changes), or categorical data (cell types/clusters).
- Python:
seaborn.color_palette(),matplotlib.colormaps - R:
RColorBrewer::brewer.pal(),viridis::viridis()
Palette Types
| Type | Use Case | Example |
|---|---|---|
| Sequential | Continuous data (expression, coverage) | viridis, Blues |
| Diverging | Centered data (fold change, z-score) | RdBu, coolwarm |
| Qualitative | Categories (clusters, conditions) | Set1, tab10 |
viridis (Colorblind-Safe)
library(viridis)
# Continuous scale
ggplot(df, aes(x, y, color = value)) +
geom_point() +
scale_color_viridis_c()
# Discrete scale
ggplot(df, aes(x, y, color = group)) +
geom_point() +
scale_color_viridis_d()
# Options: viridis, magma, plasma, inferno, cividis, turbo
scale_color_viridis_c(option = 'magma')
import matplotlib.pyplot as plt
plt.scatter(x, y, c=values, cmap='viridis')
# Options: viridis, magma, plasma, inferno, cividis
RColorBrewer (R)
library(RColorBrewer)
# View all palettes
display.brewer.all()
# Sequential
scale_fill_brewer(palette = 'Blues')
scale_color_distiller(palette = 'YlOrRd', direction = 1)
# Diverging
scale_fill_brewer(palette = 'RdBu')
scale_color_gradient2(low = '#4DBBD5', mid = 'white', high = '#E64B35', midpoint = 0)
# Qualitative
scale_color_brewer(palette = 'Set1')
scale_fill_brewer(palette = 'Dark2')
# Get colors directly
brewer.pal(n = 5, name = 'Set1')
matplotlib/seaborn (Python)
import matplotlib.pyplot as plt
import seaborn as sns
# Sequential
plt.scatter(x, y, c=values, cmap='Blues')
# Diverging
plt.scatter(x, y, c=values, cmap='RdBu_r', vmin=-2, vmax=2)
# Qualitative
palette = sns.color_palette('Set1', n_colors=5)
sns.scatterplot(x=x, y=y, hue=group, palette='Set1')
# Custom palette
custom_palette = {'Control': '#4DBBD5', 'Treatment': '#E64B35'}
sns.scatterplot(x=x, y=y, hue=group, palette=custom_palette)
Scientific Journal Palettes
library(ggsci)
# Nature Publishing Group
scale_color_npg()
scale_fill_npg()
# AAAS Science
scale_color_aaas()
# Lancet
scale_color_lancet()
# JAMA
scale_color_jama()
# JCO
scale_color_jco()
Custom Palettes
# Define custom colors
my_colors <- c(
'Control' = '#4DBBD5',
'Treatment' = '#E64B35',
'Vehicle' = '#00A087'
)
scale_color_manual(values = my_colors)
scale_fill_manual(values = my_colors)
# Create gradient
colorRampPalette(c('blue', 'white', 'red'))(100)
from matplotlib.colors import LinearSegmentedColormap
colors = ['#4DBBD5', 'white', '#E64B35']
cmap = LinearSegmentedColormap.from_list('custom_diverging', colors)
plt.imshow(data, cmap=cmap)
Heatmap Colors
library(circlize)
# For ComplexHeatmap
col_fun <- colorRamp2(c(-2, 0, 2), c('#4DBBD5', 'white', '#E64B35'))
# For pheatmap
pheatmap(mat, color = colorRampPalette(rev(brewer.pal(9, 'RdBu')))(100))
import seaborn as sns
sns.heatmap(data, cmap='RdBu_r', center=0, vmin=-2, vmax=2)
Colorblind Simulation
Goal: Verify that a chosen palette remains distinguishable under common forms of color vision deficiency.
Approach: Use the colorspace package to simulate deuteranopia and protanopia transformations on the palette colors and visually inspect the result.
library(colorspace)
# Check if palette is colorblind safe
demoplot(rainbow(5), type = 'map')
demoplot(viridis(5), type = 'map')
# Simulate colorblindness
cvd_colors <- deutan(c('#E64B35', '#4DBBD5', '#00A087')) # deuteranopia
cvd_colors <- protan(c('#E64B35', '#4DBBD5', '#00A087')) # protanopia
Recommended Palettes
| Data Type | Recommended | Avoid |
|---|---|---|
| Expression heatmap | RdBu (diverging) | Rainbow |
| Categories (<8) | Set1, Dark2, npg | Too many colors |
| Categories (>8) | tab20, Paired | Qualitative sets |
| Continuous | viridis, plasma | Jet, rainbow |
| p-values | viridis (reversed) | Red-green |
Transparency
# Add alpha
scale_color_manual(values = alpha(c('#E64B35', '#4DBBD5'), 0.7))
# In geom
geom_point(alpha = 0.6)
# Add alpha to hex
def add_alpha(hex_color, alpha):
return hex_color + format(int(alpha * 255), '02x')
color_with_alpha = add_alpha('#E64B35', 0.7)
# In scatter
plt.scatter(x, y, c='#E64B35', alpha=0.7)
Extract Colors from Palette
# Get discrete colors
pal <- brewer.pal(8, 'Set1')
pal[1:3] # First 3 colors
# Interpolate more colors
colorRampPalette(brewer.pal(8, 'Set1'))(20)
import seaborn as sns
palette = sns.color_palette('Set1', n_colors=8)
palette[:3] # First 3 colors
# As hex
palette.as_hex()
Related Skills
- data-visualization/ggplot2-fundamentals - Apply colors
- data-visualization/heatmaps-clustering - Heatmap colors
- data-visualization/specialized-omics-plots - Plot styling
When not to use it
- →Non-scientific figures
- →When color is not required
Prerequisites
Limitations
- →Limited to scientific palettes
- →Requires package compatibility
How it compares
It focuses on scientific accessibility standards rather than aesthetic preference.
Compared to similar skills
bio-data-visualization-color-palettes side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| bio-data-visualization-color-palettes (this skill) | 0 | 4mo | No flags | Beginner |
| visualization | 0 | 4mo | Review | Intermediate |
| beamer-ppt | 0 | 4mo | Review | Beginner |
| academic-plotting | 0 | 3mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by sulfierry
View all by sulfierry →You might also like
visualization
NNNightglow
构建并路由 A 股可视化任务到 `utils/visualizers` 与 `utils/visualizer_manager.py` 的正确图表管线。用于用户请求个股、指数、板块、市场情绪或模型结果图表,且需要判断所需输入字段、方法选择与输出格式(嵌入式 HTML 或 ECharts 选项)。
beamer-ppt
zhouziyue233
Create Beamer-style academic PPTX presentations using python-pptx. Produces publication-quality .pptx files with navy-blue Metropolis theme (16:9, frame title bars, progress bar) for conference talks, job market presentations, and seminar slides. Called by /present command.
academic-plotting
Supporter09
Generates publication-quality figures for ML papers from research context. Given a paper section or description, extracts system components and relationships to generate architecture diagrams via Gemini. Given experiment results or data, auto-selects chart type and generates data-driven figures via
bio-data-visualization-color-palettes
FridrichMethod
Select colormaps and qualitative palettes for scientific figures using perceptual-uniformity, color-vision-deficiency safety, and luminance-monotonicity criteria. Covers Crameri scientific colormaps, viridis/cividis/magma, Okabe-Ito categorical, ColorBrewer, and the rainbow/jet critique. Use when ch
dashboard-view-builder
gitwalter
Building and managing premium statistical dashboards, RAG explorer UIs, warehouse log monitors, and real-time visualization centers.
streamlit
sverzijl
When working with Streamlit web apps, data dashboards, ML/AI app UIs, interactive Python visualizations, or building data science applications with Python