Event Deltas: Heatmap symlog scale for zero-inclusive metrics
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 9.9k
- Forks
- 471
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 117
Description
Context
The current log-scale heatmap uses greatest(value, effectiveMin) to avoid log(0). This clamps all near-zero values into the bottom bucket, losing resolution. Similarly, values above p99 land in an overflow bucket at the top.
Proposal
Use a symlog (symmetric log) scale that smoothly transitions through zero:
sign(x) * log1p(|x|)— handles zero and negative values naturally- No clamping needed, so no data loss at the extremes
- Well-established in matplotlib, d3, etc.
This would eliminate the need for effectiveMin and the greatest() workaround, while preserving log-scale benefits for the bulk of the distribution.
Bundle with
- #1914 — overflow bucket indicators (related: once symlog removes clamping, overflow buckets become less of an issue, but visual indicators for quantile-clipped extremes are still valuable)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Locate the current log-scale heatmap implementation and the use of effectiveMin and greatest(value, effectiveMin). Review how zero, negative, and extreme values are currently bucketed, then determine how a symlog scale and the related #1914 overflow indicators should behave. Done means zero-inclusive metrics retain resolution without clamping and the heatmap still communicates quantile-clipped extremes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- data-visualization
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100