| name | colormaps-styling |
| description | Master color management and visual styling with Colorcet. Use this skill when selecting appropriate colormaps, creating accessible and colorblind-friendly visualizations, applying consistent themes, or customizing plot aesthetics with perceptually uniform color palettes. |
| compatibility | Requires colorcet >= 3.1.0, holoviews >= 1.18.0, panel >= 1.3.0, bokeh >= 3.0.0 |
Colormaps & Styling Skill
Overview
Master color management and visual styling with Colorcet and theme customization. Select appropriate colormaps, create accessible visualizations, and apply consistent application styling.
What is Colorcet?
Colorcet provides perceptually uniform colormaps designed for scientific visualization:
- Perceptually uniform: Changes in data correspond to proportional visual changes
- Colorblind-friendly: Palettes designed for accessibility
- Purpose-built: Specific colormaps for different data types
- HoloViz integration: Seamless use across HoloViews, Panel, and Bokeh
Quick Start
Installation
pip install colorcet
Basic Usage
import colorcet as cc
from colorcet import cm
import holoviews as hv
hv.extension('bokeh')
data.hvplot.scatter('x', 'y', c='value', cmap=cm['cet_goertzel'])
Core Concepts
1. Colormap Categories
Sequential: Single hue, increasing intensity
data.hvplot('x', 'y', c='value', cmap=cm['cet_blues'])
Diverging: Two hues from center point
data.hvplot('x', 'y', c='value', cmap=cm['cet_coolwarm'])
Categorical: Distinct colors for categories
data.hvplot('x', 'y', c='category', cmap=cc.palette['tab10'])
Cyclic: Wraps around for angular data
data.hvplot('x', 'y', c='angle', cmap=cm['cet_cyclic_c1'])
See: Colormap Reference for complete catalog
2. Accessibility
Colorblind-safe palettes:
cmap=cm['cet_d4']
cmap=cm['cet_p3']
cmap=cm['cet_t10']
cmap=cm['cet_gray_r']
See: Accessibility Guide for comprehensive guidelines
3. Colormap Selection Guide
| Data Type | Recommended Colormap | Example |
|---|
| Single channel (positive) | cet_blues, cet_gray_r | Temperature, density |
| Diverging (±) | cet_coolwarm, cet_bwy | Correlation, anomalies |
| Categorical | tab10, tab20 | Categories, labels |
| Angular | cet_cyclic_c1 | Wind direction, phase |
| Full spectrum | cet_goertzel | General purpose |
4. HoloViews Styling
import holoviews as hv
scatter = hv.Scatter(data, 'x', 'y', vdims=['value']).opts(
color=hv.dim('value').norm(),
cmap=cm['cet_goertzel'],
colorbar=True,
width=600,
height=400
)
scatter.opts(
size=5,
alpha=0.7,
tools=['hover'],
title='My Plot'
)
See: HoloViews Styling for advanced customization
5. Panel Themes
import panel as pn
pn.extension(design='material')
pn.config.theme = 'dark'
template = pn.template.FastListTemplate(
title='My App',
accent='#00aa41'
)
See: Panel Themes for theme customization
Common Patterns
Pattern 1: Heatmap with Diverging Colormap
import holoviews as hv
from colorcet import cm
heatmap = hv.HeatMap(data, ['x', 'y'], 'value').opts(
cmap=cm['cet_coolwarm'],
colorbar=True,
width=600,
height=400,
tools=['hover']
)
Pattern 2: Categorical Color Assignment
import panel as pn
from colorcet import palette
categories = ['A', 'B', 'C', 'D']
colors = palette['tab10'][:len(categories)]
color_map = dict(zip(categories, colors))
plot = data.hvplot('x', 'y', c='category', cmap=color_map)
Pattern 3: Consistent App Styling
import panel as pn
pn.extension(design='material')
pn.config.raw_css.append("""
.card {
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
""")
accent = '#00aa41'
template = pn.template.FastListTemplate(
title='My Dashboard',
accent=accent
)
Pattern 4: Responsive Colorbar
from holoviews import opts
plot = data.hvplot.scatter('x', 'y', c='value', cmap=cm['cet_blues']).opts(
colorbar=True,
colorbar_opts={
'title': 'Value',
'width': 10,
'ticker': {'desired_num_ticks': 5}
}
)
Pattern 5: Colorblind-Safe Visualization
from colorcet import cm
plot = data.hvplot('x', 'y', c='value', cmap=cm['cet_d4']).opts(
title='Colorblind-Safe Visualization',
width=600,
height=400
)
plot.opts(hatch_pattern='/')
Best Practices
1. Match Colormap to Data Type
temp_plot = data.hvplot(c='temperature', cmap=cm['cet_fire'])
correlation = data.hvplot(c='correlation', cmap=cm['cet_coolwarm'])
bad_plot = data.hvplot(c='value', cmap='jet')
2. Consider Accessibility
plot = data.hvplot(c='value', cmap=cm['cet_d4'])
plot.opts(hatch_pattern='/')
plot.opts(cmap=cm['cet_gray_r'])
3. Consistent Styling
COLORS = {
'primary': '#00aa41',
'secondary': '#616161',
'accent': '#ff6f00'
}
pn.template.FastListTemplate(accent=COLORS['primary'])
4. Meaningful Labels
plot.opts(
colorbar=True,
colorbar_opts={'title': 'Temperature (°C)'}
)
plot.opts(colorbar=True)
5. Performance with Large Data
plot.opts(
cmap=cm['cet_goertzel'],
color_levels=256
)
Configuration
Global Colormap Defaults
import holoviews as hv
from colorcet import cm
hv.opts.defaults(
hv.opts.Image(cmap=cm['cet_goertzel']),
hv.opts.Scatter(cmap=cm['cet_blues'])
)
Theme Configuration
import panel as pn
pn.extension(design='material')
pn.config.theme = 'dark'
pn.config.theme_json = {
'palette': {
'primary': '#00aa41',
'secondary': '#616161'
}
}
Troubleshooting
Colormap Not Showing
from colorcet import cm
print(cm['cet_goertzel'])
print(data['value'].min(), data['value'].max())
plot.opts(color=hv.dim('value').norm())
Colors Look Wrong
- Issue: Perceptual non-uniformity
- Solution: Use Colorcet instead of matplotlib defaults
cmap='jet', cmap='rainbow'
cmap=cm['cet_goertzel'], cmap=cm['cet_fire']
Theme Not Applying
pn.extension(design='material')
print(pn.config.theme)
Progressive Learning Path
Level 1: Basics
- Install Colorcet
- Use basic colormaps
- Apply to plots
Resources:
Level 2: Accessibility
- Understand colormap categories
- Choose appropriate maps
- Test for colorblindness
Resources:
Level 3: Advanced Styling
- Customize HoloViews opts
- Create custom themes
- Consistent branding
Resources:
Additional Resources
Documentation
External Links
Use Cases
Scientific Visualization
- Temperature maps
- Density plots
- Correlation matrices
- Geospatial data
Data Dashboards
- KPI indicators
- Time series
- Category comparison
- Status displays
Accessibility
- Colorblind-friendly visualizations
- Print-safe graphics
- High-contrast displays
- Grayscale compatibility
Branding
- Corporate colors
- Consistent styling
- Custom themes
- Professional appearance
Summary
Colorcet provides perceptually uniform, accessible colormaps for scientific visualization.
Key principles:
- Match colormap to data type
- Choose colorblind-safe palettes
- Use perceptually uniform maps
- Maintain consistent styling
- Test accessibility
Ideal for:
- Scientific visualizations
- Accessible dashboards
- Professional applications
- Print publications
Colormap selection:
- Sequential: Single channel data
- Diverging: Centered data (±)
- Categorical: Qualitative categories
- Cyclic: Angular/periodic data
Related Skills