@@ -59,19 +59,34 @@ def __init__(self):
59
59
60
60
# Set y-axis limits based on sampling rate
61
61
if self .sampling_rate == 250 :
62
- self .plot_widget .setYRange (0 , 2 ** 10 ) # for R3
62
+ self .plot_widget .setYRange (0 , 2 ** 10 , padding = 0 ) # for R3 & ensuring no extra spaces at end
63
63
elif self .sampling_rate == 500 :
64
- self .plot_widget .setYRange (0 , 2 ** 14 ) # for R4
64
+ self .plot_widget .setYRange (0 , 2 ** 14 , padding = 0 ) # for R4 & ensuring no extra spaces at end
65
65
66
66
# Set fixed x-axis range
67
- self .plot_widget .setXRange (0 , 10 ) # 10 seconds
67
+ self .plot_widget .setXRange (0 , 10 , padding = 0 ) # ensure no extra spaces
68
68
69
69
self .ecg_curve = self .plot_widget .plot (self .time_data , self .ecg_data , pen = pg .mkPen ('k' , width = 1 ))
70
70
self .r_peak_curve = self .plot_widget .plot ([], [], pen = None , symbol = 'o' , symbolBrush = 'r' , symbolSize = 10 ) # R-peaks in red
71
71
72
72
self .moving_average_window_size = 5 # Initialize moving average buffer
73
73
self .heart_rate_history = [] # Buffer to store heart rates for moving average
74
74
75
+ # Connect double-click event
76
+ self .plot_widget .scene ().sigMouseClicked .connect (self .on_double_click )
77
+
78
+ def on_double_click (self , event ):
79
+ if event .double ():
80
+ self .reset_zoom ()
81
+
82
+ def reset_zoom (self ):
83
+ # Reset to default y-axis limits based on the sampling rate
84
+ if self .sampling_rate == 250 :
85
+ self .plot_widget .setYRange (0 , 2 ** 10 , padding = 0 )
86
+ elif self .sampling_rate == 500 :
87
+ self .plot_widget .setYRange (0 , 2 ** 14 , padding = 0 )
88
+ self .plot_widget .setXRange (0 , 10 , padding = 0 )
89
+
75
90
def update_plot (self ):
76
91
samples , _ = self .inlet .pull_chunk (timeout = 0.0 , max_samples = 30 )
77
92
if samples :
0 commit comments