Color Schemes
Color schemes control how colors are applied to map layers in Honeycomb Maps. You can choose between static colors (single fixed color) or dynamic color schemes that vary based on data values. Dynamic schemes work with both continuous metrics and categorical dimensions.
Static vs. Dynamic Colors
Static Colors
A static color scheme uses a single, fixed color for all features in a layer, regardless of any data values.
When to use:
- Showing geographic coverage or presence without emphasizing value differences
- Displaying areas of interest or service zones
- Creating simple, uncluttered visualizations
- Layering multiple data sources where one should have neutral coloring
Examples:
- Coverage areas: Show all H3 cells where service is available in a single blue color
- Territory boundaries: Display sales territories each in their own static color
- Background layers: Use a subtle gray for context layers that shouldn't draw attention
Configuration:
- Color: Select any color using the color picker
- Opacity: Control transparency (0-100%)
Dynamic Colors
A dynamic color scheme assigns different colors to features based on their data values. Dynamic schemes come in two types, depending on whether you're coloring by continuous metrics or categorical dimensions.
Dynamic Color Schemes: Continuous
Continuous color schemes are used when coloring by numeric fields (metrics) like revenue, temperature, or population. Colors transition along a gradient from low to high values.
There are three interpolation methods available for continuous data:
Value Interpolation
Colors are assigned proportionally based on actual data values. The color scale spans from the minimum to maximum value in your dataset.
How it works:
- The minimum value in your data gets the first color in the scheme
- The maximum value gets the last color
- Values in between are interpolated proportionally
When to use:
- When you want colors to represent actual data magnitudes
- For datasets where the range of values is meaningful
- When comparing values across different time periods or filters
Examples:
- Sales revenue: $0 (light) to $1M (dark) - higher revenue gets darker colors
- Temperature: -10°C (blue) to 40°C (red) - temperature gradient
- Population density: 0 (light yellow) to 10,000/km² (dark red)
Advantages:
- Intuitive interpretation of color intensity
- Consistent color-to-value mapping
- Good for understanding data distribution
Limitations:
- Outliers can compress the color range for most values
- May not show differences well if data is clustered
Quantile Interpolation
Colors are assigned by dividing the data into equal-sized groups (quantiles). Each group gets one color, regardless of the actual value range within that group.
How it works:
- Data is sorted from smallest to largest
- Values are divided into equal groups (e.g., 5 quantiles = 20% of data in each)
- Each quantile gets one color from the scheme
When to use:
- When your data has outliers that would skew value-based coloring
- To ensure all colors in the scheme are visible
- When you want to emphasize relative ranking rather than absolute values
- For datasets with uneven distributions
Examples:
- Income distribution: Ensure rich and poor areas are both visible despite extreme differences
- Website traffic: Show relative popularity when some sites have 100× more traffic than others
- Test scores: Emphasize rankings when the score range is narrow
Advantages:
- Robust against outliers
- All colors in the scheme are used
- Shows relative position in the dataset
Limitations:
- Different value ranges can have the same color
- Less intuitive for users expecting color to represent absolute values
Custom Discrete
Define custom value ranges and assign specific colors to each range. This gives you complete control over the color-to-value mapping.
How it works:
- You define ranges with start values, end values, and colors
- Each range is inclusive of the start value, exclusive of the end value: [start, end)
- Values outside all defined ranges receive a default color
- Ranges can be any size and don't need to be evenly spaced
When to use:
- Maintaining consistent colors when data changes (e.g., with time slider filters)
- Highlighting specific value thresholds or breakpoints
- Showing positive vs. negative values (e.g., profit/loss)
- Creating categorical visualizations from continuous data
- Meeting specific color requirements (e.g., regulatory standards)
Examples:
Profitability:
- Loss (< $0): Red
- Break-even ($0 - $10K): Yellow
- Profit ($10K+): Green
Risk levels:
- Low (0-30): Green
- Medium (30-70): Yellow
- High (70-100): Red
Temperature comfort:
- Too cold (< 60°F): Blue
- Comfortable (60-75°F): Green
- Too hot (> 75°F): Orange
Configuration:
- Ranges: Define one or more ranges with:
- Start value (inclusive)
- End value (exclusive)
- Color for that range
- Default Color: Color for values outside all defined ranges
- Ranges are displayed in order and can be added, removed, or reordered
Advantages:
- Complete control over color mapping
- Colors remain stable as filters change
- Perfect for emphasizing specific thresholds
- Can create diverging schemes around a central value (e.g., 0)
Limitations:
- Requires manual configuration
- You must anticipate the data range
- More setup time compared to automatic interpolation
Dynamic Color Schemes: Categorical
Categorical color schemes are used when coloring by categorical fields (dimensions) like store type, region, or product category. Each unique category gets its own distinct color from a categorical palette.
Applicable field types: Text/string fields, boolean fields
How Categorical Coloring Works
- Automatic Assignment: Each unique value in the selected dimension receives a distinct color
- Consistent Mapping: The same category always gets the same color across the entire layer
- Legend Display: All categories are shown in the legend with their assigned colors
- Palette Selection: Choose from multiple categorical palettes optimized for different numbers of categories
Examples:
- Store types: "Restaurant" (red), "Retail" (blue), "Service" (green)
- Order status: "Pending" (yellow), "Shipped" (orange), "Delivered" (green)
- Regions: "North" (purple), "South" (teal), "East" (orange), "West" (pink)
When to Use Categorical Color Schemes
Ideal use cases:
- Store or location types: Restaurants, retail stores, service centers each get distinct colors
- Product categories: Different product lines or categories in sales data
- Geographic regions: States, countries, or sales territories
- Order status: Pending, processing, shipped, delivered
- Customer segments: New, returning, VIP, churned customers
- Vehicle types: Cars, trucks, buses, motorcycles
Best practices:
- Limit categories: While palettes support many categories, 5-10 is ideal for user comprehension
- High contrast needed: Use categorical palettes (not sequential) so categories are visually distinct
- No implied order: Categories should be nominal (no natural order), not ordinal
- Legend essential: Always show the legend so users know which color represents which category
Configuration Options for Categorical Schemes
- Categorical Palette: Select from available categorical color palettes
- Number of categories: Automatically determined by unique values in your dimension
- Opacity: Control transparency (applies to all categories)
Color Palette Options
Honeycomb provides a variety of color palettes optimized for different data types and use cases. Many palettes are from the ColorBrewer Project, available under the Apache 2.0 license.
Sequential Palettes (Continuous Data)
Use for data that goes from low to high values (e.g., population density, revenue, temperature).
Characteristics:
- Single hue that increases in intensity
- Light colors represent low values, dark colors represent high values
- Multiple options: Blues, Greens, Oranges, Reds, Purples, Grays
Examples:
- Population: Light yellow → Dark red
- Revenue: Light green → Dark green
- Depth: Light blue → Dark blue
Available Sequential Palettes:
Diverging Palettes (Continuous Data)
Use for data with a meaningful middle point where values diverge in two directions (e.g., profit/loss, temperature anomaly, change from baseline). You can use a Custom Discrete color scheme to set the middle point.
Characteristics:
- Two hues that diverge from a neutral middle color
- One hue for values below the midpoint, another for values above
- Options include: Red-Blue, Orange-Purple, Brown-Teal
Examples:
- Profit/Loss: Red (loss) ← White → Green (profit)
- Temperature Change: Blue (cooler) ← White → Red (warmer)
- Political lean: Red (conservative) ← Purple → Blue (liberal)
Available Diverging Palettes:
Categorical Palettes (Dimensions)
Use for discrete categories where colors should be easily distinguishable (e.g., store types, product categories, regions).
Standard Categorical Palettes:
- Set1, Set2, Set3, Paired, Pastel1, Pastel2, Dark2, Accent
- From the ColorBrewer Project
- Good for up to 8-12 categories
- Balanced color distribution
- Use for general-purpose categorical visualization
Available Categorical Palettes:
High-Cardinality Palettes:
For datasets with many categories (10+), Honeycomb offers three research-backed palettes designed for maximum color distinction:
31 colors optimized for human color perception. Excellent for 10-30 categories. Based on research by Glasbey et al. (2007).
22 highly distinguishable colors from Kenneth Kelly's "Universal Color Language" (1965).
26 optimized colors from Paul Green-Armytage's research (2010) on "A Colour Alphabet and the Limits of Colour Coding".
References:
- Glasbey Palette: Glasbey, C., van der Heijden, G., Toh, V.F.K. and Gray, A. (2007), Colour displays for categorical images. Color Res. Appl., 32: 304-309.
- Kelly Palette: Kelly, Kenneth L. "A Universal Color Language." Color Engineering, vol. III, no. 2, March-April 1965, pp. CE/3-CE/7.
- Green-Armytage Palette: Green‐Armytage, Paul. (2010). A Colour Alphabet and the Limits of Colour Coding. Color: Design & Creativity. 5. 1-23.
Additional Configuration Options
Color Steps (Continuous Schemes Only)
Control how many distinct colors are used in the scheme (3-9 steps). More steps provide finer gradation, fewer steps create clearer categories.
When to use different step counts:
- 3-4 steps: Simple, clear categories (low/medium/high)
- 5-7 steps: Balance between detail and clarity (most common)
- 8-9 steps: Maximum detail for subtle variations
Note: Not applicable to categorical schemes, where the number of colors matches the number of unique categories in your data.
Reversed (Continuous Schemes Only)
Flip the order of colors in the scheme. Useful for inverting the meaning (e.g., making high values light instead of dark).
When to use:
- Change color intensity direction
- Match conventional color meanings in your field
- Improve visibility against your basemap
Use Cases and Best Practices
Time Series Visualizations with Fixed Colors
When using the time slider to animate data over time, use Custom Discrete color schemes to keep color meanings consistent:
Problem: With Value or Quantile interpolation, the same color can represent different values at different time periods as the data range changes.
Solution: Define fixed color ranges that remain constant across all time periods:
Sales:
$0 - $10K: Light green
$10K - $50K: Medium green
$50K - $100K: Dark green
$100K+: Darkest greenSales:
$0 - $10K: Light green
$10K - $50K: Medium green
$50K - $100K: Dark green
$100K+: Darkest greenThis ensures users can compare across time periods without color meanings shifting.
Highlighting Positive vs. Negative Values
Use Custom Discrete with a diverging color approach for continuous data:
Example - Business Performance:
Negative profit: Red
Break-even ($-1K to $1K): Gray
Positive profit: GreenNegative profit: Red
Break-even ($-1K to $1K): Gray
Positive profit: GreenThis immediately shows which areas are profitable (green) vs. unprofitable (red).
Large Categorical Datasets
For categorical data with many categories (> 10):
- Use Glasbey, Kelly, or Green-Armytage categorical palettes
- These are specifically designed for maximum color distinction
- Consider whether all categories need to be shown, or if filtering would help
- Use filters to focus on the most important categories
- Be aware that more than 10-12 categories can be difficult for users to distinguish
Dealing with Outliers in Continuous Data
If a few extreme values compress your color scale:
- Option 1: Use Quantile interpolation to distribute colors evenly
- Option 2: Use Custom Discrete to define sensible ranges and group outliers
- Option 3: Filter out outliers if they're not relevant to your analysis
Accessibility Considerations
- Colorblind-friendly: Use colorblind-safe palettes when possible (many ColorBrewer palettes are designed for this)
- Contrast: Ensure colors have sufficient contrast with your basemap
- Legends: Always include a legend so color meaning is clear
- Multiple indicators: Don't rely on color alone - consider size, pattern, or labels
- Categorical limits: More than 10-12 categories becomes difficult for users to distinguish
Technical Notes
- Color schemes are saved with your map configuration
- Changing filters or data doesn't change Custom Discrete ranges (unlike Value/Quantile)
- Opacity can be adjusted independently of the color scheme
- Legend updates automatically based on the current color scheme and data
Related Documentation
- H3 (Honeycomb) Layer - Configure H3 layer colors
- Point Layer - Apply color schemes to points
- Polygon Layer - Color polygon fills
- Time Slider - Animate temporal data with fixed color schemes