Description:
This „ECG Polar Clock“ is an attempt to visualize raw ECG data from a Polar H10 heart rate monitor in a novel way. The data represents a ~40-minute recording collected during my morning cycle to work.
How to read it:
* Time progresses clockwise around the circle (total ~40 minutes depicted)
* Each radial line represents a single heartbeat (QRS complex).
* The distance from the center corresponds to the time elapsed since that heartbeat occurred (0 to ~1700ms).
* The overlapping lines create a density map of the heartbeat waveform.
* Each beat trace remains visible until the *next* beat occurs (the RR interval), and then fades out smoothly to allow the next beat to be seen clearly. This visualizes the variability in heart rate.
* Inner Ring (500ms / 120 BPM): If the heart rate were constant at 120 BPM, every beat would hit this line exactly
* Outer Ring (1000ms / 60 BPM): If the heart rate were constant at 60 BPM, every beat would hit this line.
Source Data: Personal ECG recording using Polar H10 (CSV export).
The visualization was generated using a custom Python script. Key implementation details include converting the linear ECG time-series into segments centered on R-peaks, mapping time to polar radius, and applying a dynamic alpha (transparency) mask to each segment based on the subsequent RR interval to create the „ghosting“ effect that avoids clutter.
de_Mike_333 on
It looks cool, but I just have to ask: Was there a reason not to start with t=0m at the top of the circle? And was there a reason to have the higher heart rate closer to the core. Both seems counter intuitive to me (but I also have no reference for that matter)
Chlorophilia on
It looks nice but it’s not very intuitive. Most people would assume longer line = higher heart rate, and the axis labels are hidden under the lines. Apart from looking nice, what exactly is this telling us that a basic line graph wouldn’t do a better job of?
Leave A Reply
Du musst angemeldet sein, um einen Kommentar abzugeben.
3 Kommentare
Description:
This „ECG Polar Clock“ is an attempt to visualize raw ECG data from a Polar H10 heart rate monitor in a novel way. The data represents a ~40-minute recording collected during my morning cycle to work.
How to read it:
* Time progresses clockwise around the circle (total ~40 minutes depicted)
* Each radial line represents a single heartbeat (QRS complex).
* The distance from the center corresponds to the time elapsed since that heartbeat occurred (0 to ~1700ms).
* The overlapping lines create a density map of the heartbeat waveform.
* Each beat trace remains visible until the *next* beat occurs (the RR interval), and then fades out smoothly to allow the next beat to be seen clearly. This visualizes the variability in heart rate.
* Inner Ring (500ms / 120 BPM): If the heart rate were constant at 120 BPM, every beat would hit this line exactly
* Outer Ring (1000ms / 60 BPM): If the heart rate were constant at 60 BPM, every beat would hit this line.
Source Data: Personal ECG recording using Polar H10 (CSV export).
Language: Python 3.11
Libraries: matplotlib, pandas, numpy, scipy.signal
The visualization was generated using a custom Python script. Key implementation details include converting the linear ECG time-series into segments centered on R-peaks, mapping time to polar radius, and applying a dynamic alpha (transparency) mask to each segment based on the subsequent RR interval to create the „ghosting“ effect that avoids clutter.
It looks cool, but I just have to ask: Was there a reason not to start with t=0m at the top of the circle? And was there a reason to have the higher heart rate closer to the core. Both seems counter intuitive to me (but I also have no reference for that matter)
It looks nice but it’s not very intuitive. Most people would assume longer line = higher heart rate, and the axis labels are hidden under the lines. Apart from looking nice, what exactly is this telling us that a basic line graph wouldn’t do a better job of?