Skip to content

Commit 10c20b5

Browse files
spec: add heatmap-polar specification (#5260)
## New Specification: `heatmap-polar` Related to #5244 --- ### specification.md # heatmap-polar: Polar Heatmap for Cyclic Two-Dimensional Data ## Description A heatmap wrapped around a circle where the angular axis represents a cyclic variable (e.g., hour of day, month) and the radial axis represents a second categorical or ordinal variable (e.g., day of week, year). Cell color encodes the measured value. This visualization reveals patterns in data with inherent cyclical structure that rectangular heatmaps distort, since the first and last angular bins are visually adjacent rather than separated at opposite ends of a row. ## Applications - Showing website traffic intensity by hour of day (angular) and day of week (radial) - Visualizing crime frequency by time of day and location zone - Displaying energy consumption patterns by month (angular) and year (radial) - Analyzing sensor data with daily or weekly cycles across multiple stations or categories ## Data - `angular` (categorical/ordinal) - Cyclic dimension mapped to angular position (e.g., hours 0–23, months Jan–Dec) - `radial` (categorical/ordinal) - Second dimension mapped to concentric rings outward from center (e.g., Mon–Sun, years) - `value` (float) - Measured quantity encoded as cell color - Size: 7–52 radial bins × 12–24 angular bins typical - Example: Hourly website visits for each day of the week (7 radial × 24 angular = 168 cells) ## Notes - Angular axis wraps continuously — 0° and 360° are adjacent, preserving cyclic continuity - Radial axis extends outward from center; innermost ring is the first radial category - Use a sequential colormap for single-sign data or a diverging colormap when data has a meaningful midpoint - Label angular positions at readable intervals (e.g., 12am, 6am, 12pm, 6pm for hourly data) - Include a colorbar legend for value interpretation - Consider adding thin gridlines or borders between cells for readability - Outer rings have larger area than inner rings; interpret color (not area) as the encoded channel --- **Next:** Add `approved` label to the issue to merge this PR. --- :robot: *[spec-create workflow](https://github.com/MarkusNeusinger/pyplots/actions/runs/24290832848)* Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 81b663c commit 10c20b5

2 files changed

Lines changed: 60 additions & 0 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# heatmap-polar: Polar Heatmap for Cyclic Two-Dimensional Data
2+
3+
## Description
4+
5+
A heatmap wrapped around a circle where the angular axis represents a cyclic variable (e.g., hour of day, month) and the radial axis represents a second categorical or ordinal variable (e.g., day of week, year). Cell color encodes the measured value. This visualization reveals patterns in data with inherent cyclical structure that rectangular heatmaps distort, since the first and last angular bins are visually adjacent rather than separated at opposite ends of a row.
6+
7+
## Applications
8+
9+
- Showing website traffic intensity by hour of day (angular) and day of week (radial)
10+
- Visualizing crime frequency by time of day and location zone
11+
- Displaying energy consumption patterns by month (angular) and year (radial)
12+
- Analyzing sensor data with daily or weekly cycles across multiple stations or categories
13+
14+
## Data
15+
16+
- `angular` (categorical/ordinal) - Cyclic dimension mapped to angular position (e.g., hours 0–23, months Jan–Dec)
17+
- `radial` (categorical/ordinal) - Second dimension mapped to concentric rings outward from center (e.g., Mon–Sun, years)
18+
- `value` (float) - Measured quantity encoded as cell color
19+
- Size: 7–52 radial bins × 12–24 angular bins typical
20+
- Example: Hourly website visits for each day of the week (7 radial × 24 angular = 168 cells)
21+
22+
## Notes
23+
24+
- Angular axis wraps continuously — 0° and 360° are adjacent, preserving cyclic continuity
25+
- Radial axis extends outward from center; innermost ring is the first radial category
26+
- Use a sequential colormap for single-sign data or a diverging colormap when data has a meaningful midpoint
27+
- Label angular positions at readable intervals (e.g., 12am, 6am, 12pm, 6pm for hourly data)
28+
- Include a colorbar legend for value interpretation
29+
- Consider adding thin gridlines or borders between cells for readability
30+
- Outer rings have larger area than inner rings; interpret color (not area) as the encoded channel
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Specification-level metadata for heatmap-polar
2+
# Auto-synced to PostgreSQL on push to main
3+
4+
spec_id: heatmap-polar
5+
title: Polar Heatmap for Cyclic Two-Dimensional Data
6+
7+
# Specification tracking
8+
created: "2026-04-11T20:23:25Z"
9+
updated: null
10+
issue: 5244
11+
suggested: MarkusNeusinger
12+
13+
# Classification tags (applies to all library implementations)
14+
# See docs/reference/tagging-system.md for detailed guidelines
15+
tags:
16+
plot_type:
17+
- heatmap
18+
- polar
19+
data_type:
20+
- categorical
21+
- ordinal
22+
- numeric
23+
domain:
24+
- general
25+
- business
26+
- energy
27+
features:
28+
- color-mapped
29+
- temporal
30+
- 2d

0 commit comments

Comments
 (0)